// Licensed to Elasticsearch B.V under one or more agreements.
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
// See the LICENSE file in the project root for more information.
//
// ███╗   ██╗ ██████╗ ████████╗██╗ ██████╗███████╗
// ████╗  ██║██╔═══██╗╚══██╔══╝██║██╔════╝██╔════╝
// ██╔██╗ ██║██║   ██║   ██║   ██║██║     █████╗
// ██║╚██╗██║██║   ██║   ██║   ██║██║     ██╔══╝
// ██║ ╚████║╚██████╔╝   ██║   ██║╚██████╗███████╗
// ╚═╝  ╚═══╝ ╚═════╝    ╚═╝   ╚═╝ ╚═════╝╚══════╝
// ------------------------------------------------
//
// This file is automatically generated.
// Please do not edit these files manually.
//
// ------------------------------------------------

#nullable restore

using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;

namespace Elastic.Clients.Elasticsearch.IndexManagement;

public partial class IndicesNamespacedClient : NamespacedClientProxy
{
	/// <summary>
	/// <para>
	/// Initializes a new instance of the <see cref="IndicesNamespacedClient"/> class for mocking.
	/// </para>
	/// </summary>
	protected IndicesNamespacedClient() : base()
	{
	}

	internal IndicesNamespacedClient(ElasticsearchClient client) : base(client)
	{
	}

	/// <summary>
	/// <para>
	/// Performs analysis on a text string and returns the resulting tokens.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-analyze.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual AnalyzeIndexResponse Analyze(AnalyzeIndexRequest request)
	{
		request.BeforeRequest();
		return DoRequest<AnalyzeIndexRequest, AnalyzeIndexResponse, AnalyzeIndexRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Performs analysis on a text string and returns the resulting tokens.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-analyze.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<AnalyzeIndexResponse> AnalyzeAsync(AnalyzeIndexRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<AnalyzeIndexRequest, AnalyzeIndexResponse, AnalyzeIndexRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Performs analysis on a text string and returns the resulting tokens.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-analyze.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual AnalyzeIndexResponse Analyze<TDocument>(AnalyzeIndexRequestDescriptor<TDocument> descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<AnalyzeIndexRequestDescriptor<TDocument>, AnalyzeIndexResponse, AnalyzeIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Performs analysis on a text string and returns the resulting tokens.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-analyze.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual AnalyzeIndexResponse Analyze<TDocument>(Elastic.Clients.Elasticsearch.IndexName? index)
	{
		var descriptor = new AnalyzeIndexRequestDescriptor<TDocument>(index);
		descriptor.BeforeRequest();
		return DoRequest<AnalyzeIndexRequestDescriptor<TDocument>, AnalyzeIndexResponse, AnalyzeIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Performs analysis on a text string and returns the resulting tokens.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-analyze.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual AnalyzeIndexResponse Analyze<TDocument>(Elastic.Clients.Elasticsearch.IndexName? index, Action<AnalyzeIndexRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new AnalyzeIndexRequestDescriptor<TDocument>(index);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<AnalyzeIndexRequestDescriptor<TDocument>, AnalyzeIndexResponse, AnalyzeIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Performs analysis on a text string and returns the resulting tokens.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-analyze.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual AnalyzeIndexResponse Analyze<TDocument>()
	{
		var descriptor = new AnalyzeIndexRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequest<AnalyzeIndexRequestDescriptor<TDocument>, AnalyzeIndexResponse, AnalyzeIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Performs analysis on a text string and returns the resulting tokens.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-analyze.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual AnalyzeIndexResponse Analyze<TDocument>(Action<AnalyzeIndexRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new AnalyzeIndexRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<AnalyzeIndexRequestDescriptor<TDocument>, AnalyzeIndexResponse, AnalyzeIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Performs analysis on a text string and returns the resulting tokens.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-analyze.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual AnalyzeIndexResponse Analyze(AnalyzeIndexRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<AnalyzeIndexRequestDescriptor, AnalyzeIndexResponse, AnalyzeIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Performs analysis on a text string and returns the resulting tokens.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-analyze.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual AnalyzeIndexResponse Analyze(Elastic.Clients.Elasticsearch.IndexName? index)
	{
		var descriptor = new AnalyzeIndexRequestDescriptor(index);
		descriptor.BeforeRequest();
		return DoRequest<AnalyzeIndexRequestDescriptor, AnalyzeIndexResponse, AnalyzeIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Performs analysis on a text string and returns the resulting tokens.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-analyze.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual AnalyzeIndexResponse Analyze(Elastic.Clients.Elasticsearch.IndexName? index, Action<AnalyzeIndexRequestDescriptor> configureRequest)
	{
		var descriptor = new AnalyzeIndexRequestDescriptor(index);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<AnalyzeIndexRequestDescriptor, AnalyzeIndexResponse, AnalyzeIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Performs analysis on a text string and returns the resulting tokens.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-analyze.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual AnalyzeIndexResponse Analyze()
	{
		var descriptor = new AnalyzeIndexRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequest<AnalyzeIndexRequestDescriptor, AnalyzeIndexResponse, AnalyzeIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Performs analysis on a text string and returns the resulting tokens.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-analyze.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual AnalyzeIndexResponse Analyze(Action<AnalyzeIndexRequestDescriptor> configureRequest)
	{
		var descriptor = new AnalyzeIndexRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<AnalyzeIndexRequestDescriptor, AnalyzeIndexResponse, AnalyzeIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Performs analysis on a text string and returns the resulting tokens.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-analyze.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<AnalyzeIndexResponse> AnalyzeAsync<TDocument>(AnalyzeIndexRequestDescriptor<TDocument> descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<AnalyzeIndexRequestDescriptor<TDocument>, AnalyzeIndexResponse, AnalyzeIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Performs analysis on a text string and returns the resulting tokens.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-analyze.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<AnalyzeIndexResponse> AnalyzeAsync<TDocument>(Elastic.Clients.Elasticsearch.IndexName? index, CancellationToken cancellationToken = default)
	{
		var descriptor = new AnalyzeIndexRequestDescriptor<TDocument>(index);
		descriptor.BeforeRequest();
		return DoRequestAsync<AnalyzeIndexRequestDescriptor<TDocument>, AnalyzeIndexResponse, AnalyzeIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Performs analysis on a text string and returns the resulting tokens.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-analyze.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<AnalyzeIndexResponse> AnalyzeAsync<TDocument>(Elastic.Clients.Elasticsearch.IndexName? index, Action<AnalyzeIndexRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new AnalyzeIndexRequestDescriptor<TDocument>(index);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<AnalyzeIndexRequestDescriptor<TDocument>, AnalyzeIndexResponse, AnalyzeIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Performs analysis on a text string and returns the resulting tokens.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-analyze.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<AnalyzeIndexResponse> AnalyzeAsync<TDocument>(CancellationToken cancellationToken = default)
	{
		var descriptor = new AnalyzeIndexRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequestAsync<AnalyzeIndexRequestDescriptor<TDocument>, AnalyzeIndexResponse, AnalyzeIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Performs analysis on a text string and returns the resulting tokens.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-analyze.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<AnalyzeIndexResponse> AnalyzeAsync<TDocument>(Action<AnalyzeIndexRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new AnalyzeIndexRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<AnalyzeIndexRequestDescriptor<TDocument>, AnalyzeIndexResponse, AnalyzeIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Performs analysis on a text string and returns the resulting tokens.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-analyze.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<AnalyzeIndexResponse> AnalyzeAsync(AnalyzeIndexRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<AnalyzeIndexRequestDescriptor, AnalyzeIndexResponse, AnalyzeIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Performs analysis on a text string and returns the resulting tokens.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-analyze.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<AnalyzeIndexResponse> AnalyzeAsync(Elastic.Clients.Elasticsearch.IndexName? index, CancellationToken cancellationToken = default)
	{
		var descriptor = new AnalyzeIndexRequestDescriptor(index);
		descriptor.BeforeRequest();
		return DoRequestAsync<AnalyzeIndexRequestDescriptor, AnalyzeIndexResponse, AnalyzeIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Performs analysis on a text string and returns the resulting tokens.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-analyze.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<AnalyzeIndexResponse> AnalyzeAsync(Elastic.Clients.Elasticsearch.IndexName? index, Action<AnalyzeIndexRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new AnalyzeIndexRequestDescriptor(index);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<AnalyzeIndexRequestDescriptor, AnalyzeIndexResponse, AnalyzeIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Performs analysis on a text string and returns the resulting tokens.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-analyze.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<AnalyzeIndexResponse> AnalyzeAsync(CancellationToken cancellationToken = default)
	{
		var descriptor = new AnalyzeIndexRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequestAsync<AnalyzeIndexRequestDescriptor, AnalyzeIndexResponse, AnalyzeIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Performs analysis on a text string and returns the resulting tokens.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-analyze.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<AnalyzeIndexResponse> AnalyzeAsync(Action<AnalyzeIndexRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new AnalyzeIndexRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<AnalyzeIndexRequestDescriptor, AnalyzeIndexResponse, AnalyzeIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Clears the caches of one or more indices.
	/// For data streams, the API clears the caches of the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clearcache.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ClearCacheResponse ClearCache(ClearCacheRequest request)
	{
		request.BeforeRequest();
		return DoRequest<ClearCacheRequest, ClearCacheResponse, ClearCacheRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Clears the caches of one or more indices.
	/// For data streams, the API clears the caches of the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clearcache.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ClearCacheResponse> ClearCacheAsync(ClearCacheRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<ClearCacheRequest, ClearCacheResponse, ClearCacheRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Clears the caches of one or more indices.
	/// For data streams, the API clears the caches of the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clearcache.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ClearCacheResponse ClearCache<TDocument>(ClearCacheRequestDescriptor<TDocument> descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<ClearCacheRequestDescriptor<TDocument>, ClearCacheResponse, ClearCacheRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Clears the caches of one or more indices.
	/// For data streams, the API clears the caches of the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clearcache.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ClearCacheResponse ClearCache<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices)
	{
		var descriptor = new ClearCacheRequestDescriptor<TDocument>(indices);
		descriptor.BeforeRequest();
		return DoRequest<ClearCacheRequestDescriptor<TDocument>, ClearCacheResponse, ClearCacheRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Clears the caches of one or more indices.
	/// For data streams, the API clears the caches of the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clearcache.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ClearCacheResponse ClearCache<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices, Action<ClearCacheRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new ClearCacheRequestDescriptor<TDocument>(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<ClearCacheRequestDescriptor<TDocument>, ClearCacheResponse, ClearCacheRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Clears the caches of one or more indices.
	/// For data streams, the API clears the caches of the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clearcache.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ClearCacheResponse ClearCache<TDocument>()
	{
		var descriptor = new ClearCacheRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequest<ClearCacheRequestDescriptor<TDocument>, ClearCacheResponse, ClearCacheRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Clears the caches of one or more indices.
	/// For data streams, the API clears the caches of the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clearcache.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ClearCacheResponse ClearCache<TDocument>(Action<ClearCacheRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new ClearCacheRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<ClearCacheRequestDescriptor<TDocument>, ClearCacheResponse, ClearCacheRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Clears the caches of one or more indices.
	/// For data streams, the API clears the caches of the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clearcache.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ClearCacheResponse ClearCache(ClearCacheRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<ClearCacheRequestDescriptor, ClearCacheResponse, ClearCacheRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Clears the caches of one or more indices.
	/// For data streams, the API clears the caches of the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clearcache.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ClearCacheResponse ClearCache(Elastic.Clients.Elasticsearch.Indices? indices)
	{
		var descriptor = new ClearCacheRequestDescriptor(indices);
		descriptor.BeforeRequest();
		return DoRequest<ClearCacheRequestDescriptor, ClearCacheResponse, ClearCacheRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Clears the caches of one or more indices.
	/// For data streams, the API clears the caches of the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clearcache.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ClearCacheResponse ClearCache(Elastic.Clients.Elasticsearch.Indices? indices, Action<ClearCacheRequestDescriptor> configureRequest)
	{
		var descriptor = new ClearCacheRequestDescriptor(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<ClearCacheRequestDescriptor, ClearCacheResponse, ClearCacheRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Clears the caches of one or more indices.
	/// For data streams, the API clears the caches of the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clearcache.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ClearCacheResponse ClearCache()
	{
		var descriptor = new ClearCacheRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequest<ClearCacheRequestDescriptor, ClearCacheResponse, ClearCacheRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Clears the caches of one or more indices.
	/// For data streams, the API clears the caches of the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clearcache.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ClearCacheResponse ClearCache(Action<ClearCacheRequestDescriptor> configureRequest)
	{
		var descriptor = new ClearCacheRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<ClearCacheRequestDescriptor, ClearCacheResponse, ClearCacheRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Clears the caches of one or more indices.
	/// For data streams, the API clears the caches of the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clearcache.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ClearCacheResponse> ClearCacheAsync<TDocument>(ClearCacheRequestDescriptor<TDocument> descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<ClearCacheRequestDescriptor<TDocument>, ClearCacheResponse, ClearCacheRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Clears the caches of one or more indices.
	/// For data streams, the API clears the caches of the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clearcache.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ClearCacheResponse> ClearCacheAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices, CancellationToken cancellationToken = default)
	{
		var descriptor = new ClearCacheRequestDescriptor<TDocument>(indices);
		descriptor.BeforeRequest();
		return DoRequestAsync<ClearCacheRequestDescriptor<TDocument>, ClearCacheResponse, ClearCacheRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Clears the caches of one or more indices.
	/// For data streams, the API clears the caches of the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clearcache.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ClearCacheResponse> ClearCacheAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices, Action<ClearCacheRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new ClearCacheRequestDescriptor<TDocument>(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<ClearCacheRequestDescriptor<TDocument>, ClearCacheResponse, ClearCacheRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Clears the caches of one or more indices.
	/// For data streams, the API clears the caches of the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clearcache.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ClearCacheResponse> ClearCacheAsync<TDocument>(CancellationToken cancellationToken = default)
	{
		var descriptor = new ClearCacheRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequestAsync<ClearCacheRequestDescriptor<TDocument>, ClearCacheResponse, ClearCacheRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Clears the caches of one or more indices.
	/// For data streams, the API clears the caches of the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clearcache.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ClearCacheResponse> ClearCacheAsync<TDocument>(Action<ClearCacheRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new ClearCacheRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<ClearCacheRequestDescriptor<TDocument>, ClearCacheResponse, ClearCacheRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Clears the caches of one or more indices.
	/// For data streams, the API clears the caches of the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clearcache.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ClearCacheResponse> ClearCacheAsync(ClearCacheRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<ClearCacheRequestDescriptor, ClearCacheResponse, ClearCacheRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Clears the caches of one or more indices.
	/// For data streams, the API clears the caches of the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clearcache.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ClearCacheResponse> ClearCacheAsync(Elastic.Clients.Elasticsearch.Indices? indices, CancellationToken cancellationToken = default)
	{
		var descriptor = new ClearCacheRequestDescriptor(indices);
		descriptor.BeforeRequest();
		return DoRequestAsync<ClearCacheRequestDescriptor, ClearCacheResponse, ClearCacheRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Clears the caches of one or more indices.
	/// For data streams, the API clears the caches of the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clearcache.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ClearCacheResponse> ClearCacheAsync(Elastic.Clients.Elasticsearch.Indices? indices, Action<ClearCacheRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new ClearCacheRequestDescriptor(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<ClearCacheRequestDescriptor, ClearCacheResponse, ClearCacheRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Clears the caches of one or more indices.
	/// For data streams, the API clears the caches of the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clearcache.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ClearCacheResponse> ClearCacheAsync(CancellationToken cancellationToken = default)
	{
		var descriptor = new ClearCacheRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequestAsync<ClearCacheRequestDescriptor, ClearCacheResponse, ClearCacheRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Clears the caches of one or more indices.
	/// For data streams, the API clears the caches of the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clearcache.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ClearCacheResponse> ClearCacheAsync(Action<ClearCacheRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new ClearCacheRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<ClearCacheRequestDescriptor, ClearCacheResponse, ClearCacheRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Clones an existing index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clone-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual CloneIndexResponse Clone(CloneIndexRequest request)
	{
		request.BeforeRequest();
		return DoRequest<CloneIndexRequest, CloneIndexResponse, CloneIndexRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Clones an existing index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clone-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<CloneIndexResponse> CloneAsync(CloneIndexRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<CloneIndexRequest, CloneIndexResponse, CloneIndexRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Clones an existing index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clone-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual CloneIndexResponse Clone<TDocument>(CloneIndexRequestDescriptor<TDocument> descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<CloneIndexRequestDescriptor<TDocument>, CloneIndexResponse, CloneIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Clones an existing index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clone-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual CloneIndexResponse Clone<TDocument>(Elastic.Clients.Elasticsearch.IndexName index, Elastic.Clients.Elasticsearch.Name target)
	{
		var descriptor = new CloneIndexRequestDescriptor<TDocument>(index, target);
		descriptor.BeforeRequest();
		return DoRequest<CloneIndexRequestDescriptor<TDocument>, CloneIndexResponse, CloneIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Clones an existing index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clone-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual CloneIndexResponse Clone<TDocument>(Elastic.Clients.Elasticsearch.IndexName index, Elastic.Clients.Elasticsearch.Name target, Action<CloneIndexRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new CloneIndexRequestDescriptor<TDocument>(index, target);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<CloneIndexRequestDescriptor<TDocument>, CloneIndexResponse, CloneIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Clones an existing index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clone-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual CloneIndexResponse Clone<TDocument>(Elastic.Clients.Elasticsearch.Name target)
	{
		var descriptor = new CloneIndexRequestDescriptor<TDocument>(target);
		descriptor.BeforeRequest();
		return DoRequest<CloneIndexRequestDescriptor<TDocument>, CloneIndexResponse, CloneIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Clones an existing index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clone-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual CloneIndexResponse Clone<TDocument>(Elastic.Clients.Elasticsearch.Name target, Action<CloneIndexRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new CloneIndexRequestDescriptor<TDocument>(target);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<CloneIndexRequestDescriptor<TDocument>, CloneIndexResponse, CloneIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Clones an existing index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clone-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual CloneIndexResponse Clone(CloneIndexRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<CloneIndexRequestDescriptor, CloneIndexResponse, CloneIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Clones an existing index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clone-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual CloneIndexResponse Clone(Elastic.Clients.Elasticsearch.IndexName index, Elastic.Clients.Elasticsearch.Name target)
	{
		var descriptor = new CloneIndexRequestDescriptor(index, target);
		descriptor.BeforeRequest();
		return DoRequest<CloneIndexRequestDescriptor, CloneIndexResponse, CloneIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Clones an existing index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clone-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual CloneIndexResponse Clone(Elastic.Clients.Elasticsearch.IndexName index, Elastic.Clients.Elasticsearch.Name target, Action<CloneIndexRequestDescriptor> configureRequest)
	{
		var descriptor = new CloneIndexRequestDescriptor(index, target);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<CloneIndexRequestDescriptor, CloneIndexResponse, CloneIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Clones an existing index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clone-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<CloneIndexResponse> CloneAsync<TDocument>(CloneIndexRequestDescriptor<TDocument> descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<CloneIndexRequestDescriptor<TDocument>, CloneIndexResponse, CloneIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Clones an existing index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clone-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<CloneIndexResponse> CloneAsync<TDocument>(Elastic.Clients.Elasticsearch.IndexName index, Elastic.Clients.Elasticsearch.Name target, CancellationToken cancellationToken = default)
	{
		var descriptor = new CloneIndexRequestDescriptor<TDocument>(index, target);
		descriptor.BeforeRequest();
		return DoRequestAsync<CloneIndexRequestDescriptor<TDocument>, CloneIndexResponse, CloneIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Clones an existing index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clone-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<CloneIndexResponse> CloneAsync<TDocument>(Elastic.Clients.Elasticsearch.IndexName index, Elastic.Clients.Elasticsearch.Name target, Action<CloneIndexRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new CloneIndexRequestDescriptor<TDocument>(index, target);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<CloneIndexRequestDescriptor<TDocument>, CloneIndexResponse, CloneIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Clones an existing index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clone-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<CloneIndexResponse> CloneAsync<TDocument>(Elastic.Clients.Elasticsearch.Name target, CancellationToken cancellationToken = default)
	{
		var descriptor = new CloneIndexRequestDescriptor<TDocument>(target);
		descriptor.BeforeRequest();
		return DoRequestAsync<CloneIndexRequestDescriptor<TDocument>, CloneIndexResponse, CloneIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Clones an existing index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clone-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<CloneIndexResponse> CloneAsync<TDocument>(Elastic.Clients.Elasticsearch.Name target, Action<CloneIndexRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new CloneIndexRequestDescriptor<TDocument>(target);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<CloneIndexRequestDescriptor<TDocument>, CloneIndexResponse, CloneIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Clones an existing index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clone-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<CloneIndexResponse> CloneAsync(CloneIndexRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<CloneIndexRequestDescriptor, CloneIndexResponse, CloneIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Clones an existing index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clone-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<CloneIndexResponse> CloneAsync(Elastic.Clients.Elasticsearch.IndexName index, Elastic.Clients.Elasticsearch.Name target, CancellationToken cancellationToken = default)
	{
		var descriptor = new CloneIndexRequestDescriptor(index, target);
		descriptor.BeforeRequest();
		return DoRequestAsync<CloneIndexRequestDescriptor, CloneIndexResponse, CloneIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Clones an existing index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clone-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<CloneIndexResponse> CloneAsync(Elastic.Clients.Elasticsearch.IndexName index, Elastic.Clients.Elasticsearch.Name target, Action<CloneIndexRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new CloneIndexRequestDescriptor(index, target);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<CloneIndexRequestDescriptor, CloneIndexResponse, CloneIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Closes an index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-close.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual CloseIndexResponse Close(CloseIndexRequest request)
	{
		request.BeforeRequest();
		return DoRequest<CloseIndexRequest, CloseIndexResponse, CloseIndexRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Closes an index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-close.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<CloseIndexResponse> CloseAsync(CloseIndexRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<CloseIndexRequest, CloseIndexResponse, CloseIndexRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Closes an index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-close.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual CloseIndexResponse Close<TDocument>(CloseIndexRequestDescriptor<TDocument> descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<CloseIndexRequestDescriptor<TDocument>, CloseIndexResponse, CloseIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Closes an index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-close.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual CloseIndexResponse Close<TDocument>(Elastic.Clients.Elasticsearch.Indices indices)
	{
		var descriptor = new CloseIndexRequestDescriptor<TDocument>(indices);
		descriptor.BeforeRequest();
		return DoRequest<CloseIndexRequestDescriptor<TDocument>, CloseIndexResponse, CloseIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Closes an index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-close.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual CloseIndexResponse Close<TDocument>(Elastic.Clients.Elasticsearch.Indices indices, Action<CloseIndexRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new CloseIndexRequestDescriptor<TDocument>(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<CloseIndexRequestDescriptor<TDocument>, CloseIndexResponse, CloseIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Closes an index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-close.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual CloseIndexResponse Close<TDocument>()
	{
		var descriptor = new CloseIndexRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequest<CloseIndexRequestDescriptor<TDocument>, CloseIndexResponse, CloseIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Closes an index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-close.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual CloseIndexResponse Close<TDocument>(Action<CloseIndexRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new CloseIndexRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<CloseIndexRequestDescriptor<TDocument>, CloseIndexResponse, CloseIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Closes an index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-close.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual CloseIndexResponse Close(CloseIndexRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<CloseIndexRequestDescriptor, CloseIndexResponse, CloseIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Closes an index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-close.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual CloseIndexResponse Close(Elastic.Clients.Elasticsearch.Indices indices)
	{
		var descriptor = new CloseIndexRequestDescriptor(indices);
		descriptor.BeforeRequest();
		return DoRequest<CloseIndexRequestDescriptor, CloseIndexResponse, CloseIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Closes an index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-close.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual CloseIndexResponse Close(Elastic.Clients.Elasticsearch.Indices indices, Action<CloseIndexRequestDescriptor> configureRequest)
	{
		var descriptor = new CloseIndexRequestDescriptor(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<CloseIndexRequestDescriptor, CloseIndexResponse, CloseIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Closes an index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-close.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<CloseIndexResponse> CloseAsync<TDocument>(CloseIndexRequestDescriptor<TDocument> descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<CloseIndexRequestDescriptor<TDocument>, CloseIndexResponse, CloseIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Closes an index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-close.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<CloseIndexResponse> CloseAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices indices, CancellationToken cancellationToken = default)
	{
		var descriptor = new CloseIndexRequestDescriptor<TDocument>(indices);
		descriptor.BeforeRequest();
		return DoRequestAsync<CloseIndexRequestDescriptor<TDocument>, CloseIndexResponse, CloseIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Closes an index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-close.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<CloseIndexResponse> CloseAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices indices, Action<CloseIndexRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new CloseIndexRequestDescriptor<TDocument>(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<CloseIndexRequestDescriptor<TDocument>, CloseIndexResponse, CloseIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Closes an index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-close.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<CloseIndexResponse> CloseAsync<TDocument>(CancellationToken cancellationToken = default)
	{
		var descriptor = new CloseIndexRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequestAsync<CloseIndexRequestDescriptor<TDocument>, CloseIndexResponse, CloseIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Closes an index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-close.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<CloseIndexResponse> CloseAsync<TDocument>(Action<CloseIndexRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new CloseIndexRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<CloseIndexRequestDescriptor<TDocument>, CloseIndexResponse, CloseIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Closes an index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-close.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<CloseIndexResponse> CloseAsync(CloseIndexRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<CloseIndexRequestDescriptor, CloseIndexResponse, CloseIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Closes an index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-close.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<CloseIndexResponse> CloseAsync(Elastic.Clients.Elasticsearch.Indices indices, CancellationToken cancellationToken = default)
	{
		var descriptor = new CloseIndexRequestDescriptor(indices);
		descriptor.BeforeRequest();
		return DoRequestAsync<CloseIndexRequestDescriptor, CloseIndexResponse, CloseIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Closes an index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-close.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<CloseIndexResponse> CloseAsync(Elastic.Clients.Elasticsearch.Indices indices, Action<CloseIndexRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new CloseIndexRequestDescriptor(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<CloseIndexRequestDescriptor, CloseIndexResponse, CloseIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Create an index.
	/// Creates a new index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-create-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual CreateIndexResponse Create(CreateIndexRequest request)
	{
		request.BeforeRequest();
		return DoRequest<CreateIndexRequest, CreateIndexResponse, CreateIndexRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Create an index.
	/// Creates a new index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-create-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<CreateIndexResponse> CreateAsync(CreateIndexRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<CreateIndexRequest, CreateIndexResponse, CreateIndexRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Create an index.
	/// Creates a new index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-create-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual CreateIndexResponse Create<TDocument>(CreateIndexRequestDescriptor<TDocument> descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<CreateIndexRequestDescriptor<TDocument>, CreateIndexResponse, CreateIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Create an index.
	/// Creates a new index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-create-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual CreateIndexResponse Create<TDocument>(Elastic.Clients.Elasticsearch.IndexName index)
	{
		var descriptor = new CreateIndexRequestDescriptor<TDocument>(index);
		descriptor.BeforeRequest();
		return DoRequest<CreateIndexRequestDescriptor<TDocument>, CreateIndexResponse, CreateIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Create an index.
	/// Creates a new index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-create-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual CreateIndexResponse Create<TDocument>(Elastic.Clients.Elasticsearch.IndexName index, Action<CreateIndexRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new CreateIndexRequestDescriptor<TDocument>(index);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<CreateIndexRequestDescriptor<TDocument>, CreateIndexResponse, CreateIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Create an index.
	/// Creates a new index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-create-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual CreateIndexResponse Create<TDocument>()
	{
		var descriptor = new CreateIndexRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequest<CreateIndexRequestDescriptor<TDocument>, CreateIndexResponse, CreateIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Create an index.
	/// Creates a new index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-create-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual CreateIndexResponse Create<TDocument>(Action<CreateIndexRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new CreateIndexRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<CreateIndexRequestDescriptor<TDocument>, CreateIndexResponse, CreateIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Create an index.
	/// Creates a new index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-create-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual CreateIndexResponse Create(CreateIndexRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<CreateIndexRequestDescriptor, CreateIndexResponse, CreateIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Create an index.
	/// Creates a new index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-create-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual CreateIndexResponse Create(Elastic.Clients.Elasticsearch.IndexName index)
	{
		var descriptor = new CreateIndexRequestDescriptor(index);
		descriptor.BeforeRequest();
		return DoRequest<CreateIndexRequestDescriptor, CreateIndexResponse, CreateIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Create an index.
	/// Creates a new index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-create-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual CreateIndexResponse Create(Elastic.Clients.Elasticsearch.IndexName index, Action<CreateIndexRequestDescriptor> configureRequest)
	{
		var descriptor = new CreateIndexRequestDescriptor(index);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<CreateIndexRequestDescriptor, CreateIndexResponse, CreateIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Create an index.
	/// Creates a new index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-create-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<CreateIndexResponse> CreateAsync<TDocument>(CreateIndexRequestDescriptor<TDocument> descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<CreateIndexRequestDescriptor<TDocument>, CreateIndexResponse, CreateIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Create an index.
	/// Creates a new index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-create-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<CreateIndexResponse> CreateAsync<TDocument>(Elastic.Clients.Elasticsearch.IndexName index, CancellationToken cancellationToken = default)
	{
		var descriptor = new CreateIndexRequestDescriptor<TDocument>(index);
		descriptor.BeforeRequest();
		return DoRequestAsync<CreateIndexRequestDescriptor<TDocument>, CreateIndexResponse, CreateIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Create an index.
	/// Creates a new index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-create-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<CreateIndexResponse> CreateAsync<TDocument>(Elastic.Clients.Elasticsearch.IndexName index, Action<CreateIndexRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new CreateIndexRequestDescriptor<TDocument>(index);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<CreateIndexRequestDescriptor<TDocument>, CreateIndexResponse, CreateIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Create an index.
	/// Creates a new index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-create-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<CreateIndexResponse> CreateAsync<TDocument>(CancellationToken cancellationToken = default)
	{
		var descriptor = new CreateIndexRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequestAsync<CreateIndexRequestDescriptor<TDocument>, CreateIndexResponse, CreateIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Create an index.
	/// Creates a new index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-create-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<CreateIndexResponse> CreateAsync<TDocument>(Action<CreateIndexRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new CreateIndexRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<CreateIndexRequestDescriptor<TDocument>, CreateIndexResponse, CreateIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Create an index.
	/// Creates a new index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-create-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<CreateIndexResponse> CreateAsync(CreateIndexRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<CreateIndexRequestDescriptor, CreateIndexResponse, CreateIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Create an index.
	/// Creates a new index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-create-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<CreateIndexResponse> CreateAsync(Elastic.Clients.Elasticsearch.IndexName index, CancellationToken cancellationToken = default)
	{
		var descriptor = new CreateIndexRequestDescriptor(index);
		descriptor.BeforeRequest();
		return DoRequestAsync<CreateIndexRequestDescriptor, CreateIndexResponse, CreateIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Create an index.
	/// Creates a new index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-create-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<CreateIndexResponse> CreateAsync(Elastic.Clients.Elasticsearch.IndexName index, Action<CreateIndexRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new CreateIndexRequestDescriptor(index);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<CreateIndexRequestDescriptor, CreateIndexResponse, CreateIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Create a data stream.
	/// Creates a data stream.
	/// You must have a matching index template with data stream enabled.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual CreateDataStreamResponse CreateDataStream(CreateDataStreamRequest request)
	{
		request.BeforeRequest();
		return DoRequest<CreateDataStreamRequest, CreateDataStreamResponse, CreateDataStreamRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Create a data stream.
	/// Creates a data stream.
	/// You must have a matching index template with data stream enabled.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<CreateDataStreamResponse> CreateDataStreamAsync(CreateDataStreamRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<CreateDataStreamRequest, CreateDataStreamResponse, CreateDataStreamRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Create a data stream.
	/// Creates a data stream.
	/// You must have a matching index template with data stream enabled.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual CreateDataStreamResponse CreateDataStream(CreateDataStreamRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<CreateDataStreamRequestDescriptor, CreateDataStreamResponse, CreateDataStreamRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Create a data stream.
	/// Creates a data stream.
	/// You must have a matching index template with data stream enabled.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual CreateDataStreamResponse CreateDataStream(Elastic.Clients.Elasticsearch.DataStreamName name)
	{
		var descriptor = new CreateDataStreamRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequest<CreateDataStreamRequestDescriptor, CreateDataStreamResponse, CreateDataStreamRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Create a data stream.
	/// Creates a data stream.
	/// You must have a matching index template with data stream enabled.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual CreateDataStreamResponse CreateDataStream(Elastic.Clients.Elasticsearch.DataStreamName name, Action<CreateDataStreamRequestDescriptor> configureRequest)
	{
		var descriptor = new CreateDataStreamRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<CreateDataStreamRequestDescriptor, CreateDataStreamResponse, CreateDataStreamRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Create a data stream.
	/// Creates a data stream.
	/// You must have a matching index template with data stream enabled.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<CreateDataStreamResponse> CreateDataStreamAsync(CreateDataStreamRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<CreateDataStreamRequestDescriptor, CreateDataStreamResponse, CreateDataStreamRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Create a data stream.
	/// Creates a data stream.
	/// You must have a matching index template with data stream enabled.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<CreateDataStreamResponse> CreateDataStreamAsync(Elastic.Clients.Elasticsearch.DataStreamName name, CancellationToken cancellationToken = default)
	{
		var descriptor = new CreateDataStreamRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequestAsync<CreateDataStreamRequestDescriptor, CreateDataStreamResponse, CreateDataStreamRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Create a data stream.
	/// Creates a data stream.
	/// You must have a matching index template with data stream enabled.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<CreateDataStreamResponse> CreateDataStreamAsync(Elastic.Clients.Elasticsearch.DataStreamName name, Action<CreateDataStreamRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new CreateDataStreamRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<CreateDataStreamRequestDescriptor, CreateDataStreamResponse, CreateDataStreamRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get data stream stats.
	/// Retrieves statistics for one or more data streams.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DataStreamsStatsResponse DataStreamsStats(DataStreamsStatsRequest request)
	{
		request.BeforeRequest();
		return DoRequest<DataStreamsStatsRequest, DataStreamsStatsResponse, DataStreamsStatsRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Get data stream stats.
	/// Retrieves statistics for one or more data streams.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DataStreamsStatsResponse> DataStreamsStatsAsync(DataStreamsStatsRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<DataStreamsStatsRequest, DataStreamsStatsResponse, DataStreamsStatsRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get data stream stats.
	/// Retrieves statistics for one or more data streams.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DataStreamsStatsResponse DataStreamsStats(DataStreamsStatsRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<DataStreamsStatsRequestDescriptor, DataStreamsStatsResponse, DataStreamsStatsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get data stream stats.
	/// Retrieves statistics for one or more data streams.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DataStreamsStatsResponse DataStreamsStats(Elastic.Clients.Elasticsearch.IndexName? name)
	{
		var descriptor = new DataStreamsStatsRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequest<DataStreamsStatsRequestDescriptor, DataStreamsStatsResponse, DataStreamsStatsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get data stream stats.
	/// Retrieves statistics for one or more data streams.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DataStreamsStatsResponse DataStreamsStats(Elastic.Clients.Elasticsearch.IndexName? name, Action<DataStreamsStatsRequestDescriptor> configureRequest)
	{
		var descriptor = new DataStreamsStatsRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<DataStreamsStatsRequestDescriptor, DataStreamsStatsResponse, DataStreamsStatsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get data stream stats.
	/// Retrieves statistics for one or more data streams.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DataStreamsStatsResponse DataStreamsStats()
	{
		var descriptor = new DataStreamsStatsRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequest<DataStreamsStatsRequestDescriptor, DataStreamsStatsResponse, DataStreamsStatsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get data stream stats.
	/// Retrieves statistics for one or more data streams.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DataStreamsStatsResponse DataStreamsStats(Action<DataStreamsStatsRequestDescriptor> configureRequest)
	{
		var descriptor = new DataStreamsStatsRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<DataStreamsStatsRequestDescriptor, DataStreamsStatsResponse, DataStreamsStatsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get data stream stats.
	/// Retrieves statistics for one or more data streams.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DataStreamsStatsResponse> DataStreamsStatsAsync(DataStreamsStatsRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<DataStreamsStatsRequestDescriptor, DataStreamsStatsResponse, DataStreamsStatsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get data stream stats.
	/// Retrieves statistics for one or more data streams.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DataStreamsStatsResponse> DataStreamsStatsAsync(Elastic.Clients.Elasticsearch.IndexName? name, CancellationToken cancellationToken = default)
	{
		var descriptor = new DataStreamsStatsRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequestAsync<DataStreamsStatsRequestDescriptor, DataStreamsStatsResponse, DataStreamsStatsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get data stream stats.
	/// Retrieves statistics for one or more data streams.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DataStreamsStatsResponse> DataStreamsStatsAsync(Elastic.Clients.Elasticsearch.IndexName? name, Action<DataStreamsStatsRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new DataStreamsStatsRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<DataStreamsStatsRequestDescriptor, DataStreamsStatsResponse, DataStreamsStatsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get data stream stats.
	/// Retrieves statistics for one or more data streams.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DataStreamsStatsResponse> DataStreamsStatsAsync(CancellationToken cancellationToken = default)
	{
		var descriptor = new DataStreamsStatsRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequestAsync<DataStreamsStatsRequestDescriptor, DataStreamsStatsResponse, DataStreamsStatsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get data stream stats.
	/// Retrieves statistics for one or more data streams.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DataStreamsStatsResponse> DataStreamsStatsAsync(Action<DataStreamsStatsRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new DataStreamsStatsRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<DataStreamsStatsRequestDescriptor, DataStreamsStatsResponse, DataStreamsStatsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Delete indices.
	/// Deletes one or more indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-delete-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DeleteIndexResponse Delete(DeleteIndexRequest request)
	{
		request.BeforeRequest();
		return DoRequest<DeleteIndexRequest, DeleteIndexResponse, DeleteIndexRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Delete indices.
	/// Deletes one or more indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-delete-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DeleteIndexResponse> DeleteAsync(DeleteIndexRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<DeleteIndexRequest, DeleteIndexResponse, DeleteIndexRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Delete indices.
	/// Deletes one or more indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-delete-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DeleteIndexResponse Delete<TDocument>(DeleteIndexRequestDescriptor<TDocument> descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<DeleteIndexRequestDescriptor<TDocument>, DeleteIndexResponse, DeleteIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Delete indices.
	/// Deletes one or more indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-delete-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DeleteIndexResponse Delete<TDocument>(Elastic.Clients.Elasticsearch.Indices indices)
	{
		var descriptor = new DeleteIndexRequestDescriptor<TDocument>(indices);
		descriptor.BeforeRequest();
		return DoRequest<DeleteIndexRequestDescriptor<TDocument>, DeleteIndexResponse, DeleteIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Delete indices.
	/// Deletes one or more indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-delete-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DeleteIndexResponse Delete<TDocument>(Elastic.Clients.Elasticsearch.Indices indices, Action<DeleteIndexRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new DeleteIndexRequestDescriptor<TDocument>(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<DeleteIndexRequestDescriptor<TDocument>, DeleteIndexResponse, DeleteIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Delete indices.
	/// Deletes one or more indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-delete-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DeleteIndexResponse Delete<TDocument>()
	{
		var descriptor = new DeleteIndexRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequest<DeleteIndexRequestDescriptor<TDocument>, DeleteIndexResponse, DeleteIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Delete indices.
	/// Deletes one or more indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-delete-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DeleteIndexResponse Delete<TDocument>(Action<DeleteIndexRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new DeleteIndexRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<DeleteIndexRequestDescriptor<TDocument>, DeleteIndexResponse, DeleteIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Delete indices.
	/// Deletes one or more indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-delete-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DeleteIndexResponse Delete(DeleteIndexRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<DeleteIndexRequestDescriptor, DeleteIndexResponse, DeleteIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Delete indices.
	/// Deletes one or more indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-delete-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DeleteIndexResponse Delete(Elastic.Clients.Elasticsearch.Indices indices)
	{
		var descriptor = new DeleteIndexRequestDescriptor(indices);
		descriptor.BeforeRequest();
		return DoRequest<DeleteIndexRequestDescriptor, DeleteIndexResponse, DeleteIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Delete indices.
	/// Deletes one or more indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-delete-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DeleteIndexResponse Delete(Elastic.Clients.Elasticsearch.Indices indices, Action<DeleteIndexRequestDescriptor> configureRequest)
	{
		var descriptor = new DeleteIndexRequestDescriptor(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<DeleteIndexRequestDescriptor, DeleteIndexResponse, DeleteIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Delete indices.
	/// Deletes one or more indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-delete-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DeleteIndexResponse> DeleteAsync<TDocument>(DeleteIndexRequestDescriptor<TDocument> descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<DeleteIndexRequestDescriptor<TDocument>, DeleteIndexResponse, DeleteIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Delete indices.
	/// Deletes one or more indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-delete-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DeleteIndexResponse> DeleteAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices indices, CancellationToken cancellationToken = default)
	{
		var descriptor = new DeleteIndexRequestDescriptor<TDocument>(indices);
		descriptor.BeforeRequest();
		return DoRequestAsync<DeleteIndexRequestDescriptor<TDocument>, DeleteIndexResponse, DeleteIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Delete indices.
	/// Deletes one or more indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-delete-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DeleteIndexResponse> DeleteAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices indices, Action<DeleteIndexRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new DeleteIndexRequestDescriptor<TDocument>(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<DeleteIndexRequestDescriptor<TDocument>, DeleteIndexResponse, DeleteIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Delete indices.
	/// Deletes one or more indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-delete-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DeleteIndexResponse> DeleteAsync<TDocument>(CancellationToken cancellationToken = default)
	{
		var descriptor = new DeleteIndexRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequestAsync<DeleteIndexRequestDescriptor<TDocument>, DeleteIndexResponse, DeleteIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Delete indices.
	/// Deletes one or more indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-delete-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DeleteIndexResponse> DeleteAsync<TDocument>(Action<DeleteIndexRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new DeleteIndexRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<DeleteIndexRequestDescriptor<TDocument>, DeleteIndexResponse, DeleteIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Delete indices.
	/// Deletes one or more indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-delete-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DeleteIndexResponse> DeleteAsync(DeleteIndexRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<DeleteIndexRequestDescriptor, DeleteIndexResponse, DeleteIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Delete indices.
	/// Deletes one or more indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-delete-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DeleteIndexResponse> DeleteAsync(Elastic.Clients.Elasticsearch.Indices indices, CancellationToken cancellationToken = default)
	{
		var descriptor = new DeleteIndexRequestDescriptor(indices);
		descriptor.BeforeRequest();
		return DoRequestAsync<DeleteIndexRequestDescriptor, DeleteIndexResponse, DeleteIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Delete indices.
	/// Deletes one or more indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-delete-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DeleteIndexResponse> DeleteAsync(Elastic.Clients.Elasticsearch.Indices indices, Action<DeleteIndexRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new DeleteIndexRequestDescriptor(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<DeleteIndexRequestDescriptor, DeleteIndexResponse, DeleteIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Delete an alias.
	/// Removes a data stream or index from an alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DeleteAliasResponse DeleteAlias(DeleteAliasRequest request)
	{
		request.BeforeRequest();
		return DoRequest<DeleteAliasRequest, DeleteAliasResponse, DeleteAliasRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Delete an alias.
	/// Removes a data stream or index from an alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DeleteAliasResponse> DeleteAliasAsync(DeleteAliasRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<DeleteAliasRequest, DeleteAliasResponse, DeleteAliasRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Delete an alias.
	/// Removes a data stream or index from an alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DeleteAliasResponse DeleteAlias<TDocument>(DeleteAliasRequestDescriptor<TDocument> descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<DeleteAliasRequestDescriptor<TDocument>, DeleteAliasResponse, DeleteAliasRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Delete an alias.
	/// Removes a data stream or index from an alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DeleteAliasResponse DeleteAlias<TDocument>(Elastic.Clients.Elasticsearch.Indices indices, Elastic.Clients.Elasticsearch.Names name)
	{
		var descriptor = new DeleteAliasRequestDescriptor<TDocument>(indices, name);
		descriptor.BeforeRequest();
		return DoRequest<DeleteAliasRequestDescriptor<TDocument>, DeleteAliasResponse, DeleteAliasRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Delete an alias.
	/// Removes a data stream or index from an alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DeleteAliasResponse DeleteAlias<TDocument>(Elastic.Clients.Elasticsearch.Indices indices, Elastic.Clients.Elasticsearch.Names name, Action<DeleteAliasRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new DeleteAliasRequestDescriptor<TDocument>(indices, name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<DeleteAliasRequestDescriptor<TDocument>, DeleteAliasResponse, DeleteAliasRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Delete an alias.
	/// Removes a data stream or index from an alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DeleteAliasResponse DeleteAlias<TDocument>(Elastic.Clients.Elasticsearch.Names name)
	{
		var descriptor = new DeleteAliasRequestDescriptor<TDocument>(name);
		descriptor.BeforeRequest();
		return DoRequest<DeleteAliasRequestDescriptor<TDocument>, DeleteAliasResponse, DeleteAliasRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Delete an alias.
	/// Removes a data stream or index from an alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DeleteAliasResponse DeleteAlias<TDocument>(Elastic.Clients.Elasticsearch.Names name, Action<DeleteAliasRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new DeleteAliasRequestDescriptor<TDocument>(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<DeleteAliasRequestDescriptor<TDocument>, DeleteAliasResponse, DeleteAliasRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Delete an alias.
	/// Removes a data stream or index from an alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DeleteAliasResponse DeleteAlias(DeleteAliasRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<DeleteAliasRequestDescriptor, DeleteAliasResponse, DeleteAliasRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Delete an alias.
	/// Removes a data stream or index from an alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DeleteAliasResponse DeleteAlias(Elastic.Clients.Elasticsearch.Indices indices, Elastic.Clients.Elasticsearch.Names name)
	{
		var descriptor = new DeleteAliasRequestDescriptor(indices, name);
		descriptor.BeforeRequest();
		return DoRequest<DeleteAliasRequestDescriptor, DeleteAliasResponse, DeleteAliasRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Delete an alias.
	/// Removes a data stream or index from an alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DeleteAliasResponse DeleteAlias(Elastic.Clients.Elasticsearch.Indices indices, Elastic.Clients.Elasticsearch.Names name, Action<DeleteAliasRequestDescriptor> configureRequest)
	{
		var descriptor = new DeleteAliasRequestDescriptor(indices, name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<DeleteAliasRequestDescriptor, DeleteAliasResponse, DeleteAliasRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Delete an alias.
	/// Removes a data stream or index from an alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DeleteAliasResponse> DeleteAliasAsync<TDocument>(DeleteAliasRequestDescriptor<TDocument> descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<DeleteAliasRequestDescriptor<TDocument>, DeleteAliasResponse, DeleteAliasRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Delete an alias.
	/// Removes a data stream or index from an alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DeleteAliasResponse> DeleteAliasAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices indices, Elastic.Clients.Elasticsearch.Names name, CancellationToken cancellationToken = default)
	{
		var descriptor = new DeleteAliasRequestDescriptor<TDocument>(indices, name);
		descriptor.BeforeRequest();
		return DoRequestAsync<DeleteAliasRequestDescriptor<TDocument>, DeleteAliasResponse, DeleteAliasRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Delete an alias.
	/// Removes a data stream or index from an alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DeleteAliasResponse> DeleteAliasAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices indices, Elastic.Clients.Elasticsearch.Names name, Action<DeleteAliasRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new DeleteAliasRequestDescriptor<TDocument>(indices, name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<DeleteAliasRequestDescriptor<TDocument>, DeleteAliasResponse, DeleteAliasRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Delete an alias.
	/// Removes a data stream or index from an alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DeleteAliasResponse> DeleteAliasAsync<TDocument>(Elastic.Clients.Elasticsearch.Names name, CancellationToken cancellationToken = default)
	{
		var descriptor = new DeleteAliasRequestDescriptor<TDocument>(name);
		descriptor.BeforeRequest();
		return DoRequestAsync<DeleteAliasRequestDescriptor<TDocument>, DeleteAliasResponse, DeleteAliasRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Delete an alias.
	/// Removes a data stream or index from an alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DeleteAliasResponse> DeleteAliasAsync<TDocument>(Elastic.Clients.Elasticsearch.Names name, Action<DeleteAliasRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new DeleteAliasRequestDescriptor<TDocument>(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<DeleteAliasRequestDescriptor<TDocument>, DeleteAliasResponse, DeleteAliasRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Delete an alias.
	/// Removes a data stream or index from an alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DeleteAliasResponse> DeleteAliasAsync(DeleteAliasRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<DeleteAliasRequestDescriptor, DeleteAliasResponse, DeleteAliasRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Delete an alias.
	/// Removes a data stream or index from an alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DeleteAliasResponse> DeleteAliasAsync(Elastic.Clients.Elasticsearch.Indices indices, Elastic.Clients.Elasticsearch.Names name, CancellationToken cancellationToken = default)
	{
		var descriptor = new DeleteAliasRequestDescriptor(indices, name);
		descriptor.BeforeRequest();
		return DoRequestAsync<DeleteAliasRequestDescriptor, DeleteAliasResponse, DeleteAliasRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Delete an alias.
	/// Removes a data stream or index from an alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DeleteAliasResponse> DeleteAliasAsync(Elastic.Clients.Elasticsearch.Indices indices, Elastic.Clients.Elasticsearch.Names name, Action<DeleteAliasRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new DeleteAliasRequestDescriptor(indices, name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<DeleteAliasRequestDescriptor, DeleteAliasResponse, DeleteAliasRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Delete data stream lifecycles.
	/// Removes the data stream lifecycle from a data stream, rendering it not managed by the data stream lifecycle.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams-delete-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DeleteDataLifecycleResponse DeleteDataLifecycle(DeleteDataLifecycleRequest request)
	{
		request.BeforeRequest();
		return DoRequest<DeleteDataLifecycleRequest, DeleteDataLifecycleResponse, DeleteDataLifecycleRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Delete data stream lifecycles.
	/// Removes the data stream lifecycle from a data stream, rendering it not managed by the data stream lifecycle.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams-delete-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DeleteDataLifecycleResponse> DeleteDataLifecycleAsync(DeleteDataLifecycleRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<DeleteDataLifecycleRequest, DeleteDataLifecycleResponse, DeleteDataLifecycleRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Delete data stream lifecycles.
	/// Removes the data stream lifecycle from a data stream, rendering it not managed by the data stream lifecycle.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams-delete-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DeleteDataLifecycleResponse DeleteDataLifecycle(DeleteDataLifecycleRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<DeleteDataLifecycleRequestDescriptor, DeleteDataLifecycleResponse, DeleteDataLifecycleRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Delete data stream lifecycles.
	/// Removes the data stream lifecycle from a data stream, rendering it not managed by the data stream lifecycle.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams-delete-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DeleteDataLifecycleResponse DeleteDataLifecycle(Elastic.Clients.Elasticsearch.DataStreamNames name)
	{
		var descriptor = new DeleteDataLifecycleRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequest<DeleteDataLifecycleRequestDescriptor, DeleteDataLifecycleResponse, DeleteDataLifecycleRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Delete data stream lifecycles.
	/// Removes the data stream lifecycle from a data stream, rendering it not managed by the data stream lifecycle.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams-delete-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DeleteDataLifecycleResponse DeleteDataLifecycle(Elastic.Clients.Elasticsearch.DataStreamNames name, Action<DeleteDataLifecycleRequestDescriptor> configureRequest)
	{
		var descriptor = new DeleteDataLifecycleRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<DeleteDataLifecycleRequestDescriptor, DeleteDataLifecycleResponse, DeleteDataLifecycleRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Delete data stream lifecycles.
	/// Removes the data stream lifecycle from a data stream, rendering it not managed by the data stream lifecycle.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams-delete-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DeleteDataLifecycleResponse> DeleteDataLifecycleAsync(DeleteDataLifecycleRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<DeleteDataLifecycleRequestDescriptor, DeleteDataLifecycleResponse, DeleteDataLifecycleRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Delete data stream lifecycles.
	/// Removes the data stream lifecycle from a data stream, rendering it not managed by the data stream lifecycle.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams-delete-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DeleteDataLifecycleResponse> DeleteDataLifecycleAsync(Elastic.Clients.Elasticsearch.DataStreamNames name, CancellationToken cancellationToken = default)
	{
		var descriptor = new DeleteDataLifecycleRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequestAsync<DeleteDataLifecycleRequestDescriptor, DeleteDataLifecycleResponse, DeleteDataLifecycleRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Delete data stream lifecycles.
	/// Removes the data stream lifecycle from a data stream, rendering it not managed by the data stream lifecycle.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams-delete-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DeleteDataLifecycleResponse> DeleteDataLifecycleAsync(Elastic.Clients.Elasticsearch.DataStreamNames name, Action<DeleteDataLifecycleRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new DeleteDataLifecycleRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<DeleteDataLifecycleRequestDescriptor, DeleteDataLifecycleResponse, DeleteDataLifecycleRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Delete data streams.
	/// Deletes one or more data streams and their backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DeleteDataStreamResponse DeleteDataStream(DeleteDataStreamRequest request)
	{
		request.BeforeRequest();
		return DoRequest<DeleteDataStreamRequest, DeleteDataStreamResponse, DeleteDataStreamRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Delete data streams.
	/// Deletes one or more data streams and their backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DeleteDataStreamResponse> DeleteDataStreamAsync(DeleteDataStreamRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<DeleteDataStreamRequest, DeleteDataStreamResponse, DeleteDataStreamRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Delete data streams.
	/// Deletes one or more data streams and their backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DeleteDataStreamResponse DeleteDataStream(DeleteDataStreamRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<DeleteDataStreamRequestDescriptor, DeleteDataStreamResponse, DeleteDataStreamRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Delete data streams.
	/// Deletes one or more data streams and their backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DeleteDataStreamResponse DeleteDataStream(Elastic.Clients.Elasticsearch.DataStreamNames name)
	{
		var descriptor = new DeleteDataStreamRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequest<DeleteDataStreamRequestDescriptor, DeleteDataStreamResponse, DeleteDataStreamRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Delete data streams.
	/// Deletes one or more data streams and their backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DeleteDataStreamResponse DeleteDataStream(Elastic.Clients.Elasticsearch.DataStreamNames name, Action<DeleteDataStreamRequestDescriptor> configureRequest)
	{
		var descriptor = new DeleteDataStreamRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<DeleteDataStreamRequestDescriptor, DeleteDataStreamResponse, DeleteDataStreamRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Delete data streams.
	/// Deletes one or more data streams and their backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DeleteDataStreamResponse> DeleteDataStreamAsync(DeleteDataStreamRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<DeleteDataStreamRequestDescriptor, DeleteDataStreamResponse, DeleteDataStreamRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Delete data streams.
	/// Deletes one or more data streams and their backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DeleteDataStreamResponse> DeleteDataStreamAsync(Elastic.Clients.Elasticsearch.DataStreamNames name, CancellationToken cancellationToken = default)
	{
		var descriptor = new DeleteDataStreamRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequestAsync<DeleteDataStreamRequestDescriptor, DeleteDataStreamResponse, DeleteDataStreamRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Delete data streams.
	/// Deletes one or more data streams and their backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DeleteDataStreamResponse> DeleteDataStreamAsync(Elastic.Clients.Elasticsearch.DataStreamNames name, Action<DeleteDataStreamRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new DeleteDataStreamRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<DeleteDataStreamRequestDescriptor, DeleteDataStreamResponse, DeleteDataStreamRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Delete an index template.
	/// The provided &lt;index-template> may contain multiple template names separated by a comma. If multiple template
	/// names are specified then there is no wildcard support and the provided names should match completely with
	/// existing templates.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-delete-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DeleteIndexTemplateResponse DeleteIndexTemplate(DeleteIndexTemplateRequest request)
	{
		request.BeforeRequest();
		return DoRequest<DeleteIndexTemplateRequest, DeleteIndexTemplateResponse, DeleteIndexTemplateRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Delete an index template.
	/// The provided &lt;index-template> may contain multiple template names separated by a comma. If multiple template
	/// names are specified then there is no wildcard support and the provided names should match completely with
	/// existing templates.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-delete-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DeleteIndexTemplateResponse> DeleteIndexTemplateAsync(DeleteIndexTemplateRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<DeleteIndexTemplateRequest, DeleteIndexTemplateResponse, DeleteIndexTemplateRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Delete an index template.
	/// The provided &lt;index-template> may contain multiple template names separated by a comma. If multiple template
	/// names are specified then there is no wildcard support and the provided names should match completely with
	/// existing templates.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-delete-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DeleteIndexTemplateResponse DeleteIndexTemplate(DeleteIndexTemplateRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<DeleteIndexTemplateRequestDescriptor, DeleteIndexTemplateResponse, DeleteIndexTemplateRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Delete an index template.
	/// The provided &lt;index-template> may contain multiple template names separated by a comma. If multiple template
	/// names are specified then there is no wildcard support and the provided names should match completely with
	/// existing templates.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-delete-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DeleteIndexTemplateResponse DeleteIndexTemplate(Elastic.Clients.Elasticsearch.Names name)
	{
		var descriptor = new DeleteIndexTemplateRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequest<DeleteIndexTemplateRequestDescriptor, DeleteIndexTemplateResponse, DeleteIndexTemplateRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Delete an index template.
	/// The provided &lt;index-template> may contain multiple template names separated by a comma. If multiple template
	/// names are specified then there is no wildcard support and the provided names should match completely with
	/// existing templates.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-delete-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DeleteIndexTemplateResponse DeleteIndexTemplate(Elastic.Clients.Elasticsearch.Names name, Action<DeleteIndexTemplateRequestDescriptor> configureRequest)
	{
		var descriptor = new DeleteIndexTemplateRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<DeleteIndexTemplateRequestDescriptor, DeleteIndexTemplateResponse, DeleteIndexTemplateRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Delete an index template.
	/// The provided &lt;index-template> may contain multiple template names separated by a comma. If multiple template
	/// names are specified then there is no wildcard support and the provided names should match completely with
	/// existing templates.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-delete-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DeleteIndexTemplateResponse> DeleteIndexTemplateAsync(DeleteIndexTemplateRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<DeleteIndexTemplateRequestDescriptor, DeleteIndexTemplateResponse, DeleteIndexTemplateRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Delete an index template.
	/// The provided &lt;index-template> may contain multiple template names separated by a comma. If multiple template
	/// names are specified then there is no wildcard support and the provided names should match completely with
	/// existing templates.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-delete-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DeleteIndexTemplateResponse> DeleteIndexTemplateAsync(Elastic.Clients.Elasticsearch.Names name, CancellationToken cancellationToken = default)
	{
		var descriptor = new DeleteIndexTemplateRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequestAsync<DeleteIndexTemplateRequestDescriptor, DeleteIndexTemplateResponse, DeleteIndexTemplateRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Delete an index template.
	/// The provided &lt;index-template> may contain multiple template names separated by a comma. If multiple template
	/// names are specified then there is no wildcard support and the provided names should match completely with
	/// existing templates.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-delete-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DeleteIndexTemplateResponse> DeleteIndexTemplateAsync(Elastic.Clients.Elasticsearch.Names name, Action<DeleteIndexTemplateRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new DeleteIndexTemplateRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<DeleteIndexTemplateRequestDescriptor, DeleteIndexTemplateResponse, DeleteIndexTemplateRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Deletes a legacy index template.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-delete-template-v1.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DeleteTemplateResponse DeleteTemplate(DeleteTemplateRequest request)
	{
		request.BeforeRequest();
		return DoRequest<DeleteTemplateRequest, DeleteTemplateResponse, DeleteTemplateRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Deletes a legacy index template.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-delete-template-v1.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DeleteTemplateResponse> DeleteTemplateAsync(DeleteTemplateRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<DeleteTemplateRequest, DeleteTemplateResponse, DeleteTemplateRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Deletes a legacy index template.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-delete-template-v1.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DeleteTemplateResponse DeleteTemplate(DeleteTemplateRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<DeleteTemplateRequestDescriptor, DeleteTemplateResponse, DeleteTemplateRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Deletes a legacy index template.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-delete-template-v1.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DeleteTemplateResponse DeleteTemplate(Elastic.Clients.Elasticsearch.Name name)
	{
		var descriptor = new DeleteTemplateRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequest<DeleteTemplateRequestDescriptor, DeleteTemplateResponse, DeleteTemplateRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Deletes a legacy index template.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-delete-template-v1.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DeleteTemplateResponse DeleteTemplate(Elastic.Clients.Elasticsearch.Name name, Action<DeleteTemplateRequestDescriptor> configureRequest)
	{
		var descriptor = new DeleteTemplateRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<DeleteTemplateRequestDescriptor, DeleteTemplateResponse, DeleteTemplateRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Deletes a legacy index template.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-delete-template-v1.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DeleteTemplateResponse> DeleteTemplateAsync(DeleteTemplateRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<DeleteTemplateRequestDescriptor, DeleteTemplateResponse, DeleteTemplateRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Deletes a legacy index template.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-delete-template-v1.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DeleteTemplateResponse> DeleteTemplateAsync(Elastic.Clients.Elasticsearch.Name name, CancellationToken cancellationToken = default)
	{
		var descriptor = new DeleteTemplateRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequestAsync<DeleteTemplateRequestDescriptor, DeleteTemplateResponse, DeleteTemplateRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Deletes a legacy index template.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-delete-template-v1.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DeleteTemplateResponse> DeleteTemplateAsync(Elastic.Clients.Elasticsearch.Name name, Action<DeleteTemplateRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new DeleteTemplateRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<DeleteTemplateRequestDescriptor, DeleteTemplateResponse, DeleteTemplateRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Analyzes the disk usage of each field of an index or data stream.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-disk-usage.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DiskUsageResponse DiskUsage(DiskUsageRequest request)
	{
		request.BeforeRequest();
		return DoRequest<DiskUsageRequest, DiskUsageResponse, DiskUsageRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Analyzes the disk usage of each field of an index or data stream.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-disk-usage.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DiskUsageResponse> DiskUsageAsync(DiskUsageRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<DiskUsageRequest, DiskUsageResponse, DiskUsageRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Analyzes the disk usage of each field of an index or data stream.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-disk-usage.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DiskUsageResponse DiskUsage<TDocument>(DiskUsageRequestDescriptor<TDocument> descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<DiskUsageRequestDescriptor<TDocument>, DiskUsageResponse, DiskUsageRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Analyzes the disk usage of each field of an index or data stream.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-disk-usage.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DiskUsageResponse DiskUsage<TDocument>(Elastic.Clients.Elasticsearch.Indices indices)
	{
		var descriptor = new DiskUsageRequestDescriptor<TDocument>(indices);
		descriptor.BeforeRequest();
		return DoRequest<DiskUsageRequestDescriptor<TDocument>, DiskUsageResponse, DiskUsageRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Analyzes the disk usage of each field of an index or data stream.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-disk-usage.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DiskUsageResponse DiskUsage<TDocument>(Elastic.Clients.Elasticsearch.Indices indices, Action<DiskUsageRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new DiskUsageRequestDescriptor<TDocument>(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<DiskUsageRequestDescriptor<TDocument>, DiskUsageResponse, DiskUsageRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Analyzes the disk usage of each field of an index or data stream.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-disk-usage.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DiskUsageResponse DiskUsage<TDocument>()
	{
		var descriptor = new DiskUsageRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequest<DiskUsageRequestDescriptor<TDocument>, DiskUsageResponse, DiskUsageRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Analyzes the disk usage of each field of an index or data stream.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-disk-usage.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DiskUsageResponse DiskUsage<TDocument>(Action<DiskUsageRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new DiskUsageRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<DiskUsageRequestDescriptor<TDocument>, DiskUsageResponse, DiskUsageRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Analyzes the disk usage of each field of an index or data stream.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-disk-usage.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DiskUsageResponse DiskUsage(DiskUsageRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<DiskUsageRequestDescriptor, DiskUsageResponse, DiskUsageRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Analyzes the disk usage of each field of an index or data stream.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-disk-usage.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DiskUsageResponse DiskUsage(Elastic.Clients.Elasticsearch.Indices indices)
	{
		var descriptor = new DiskUsageRequestDescriptor(indices);
		descriptor.BeforeRequest();
		return DoRequest<DiskUsageRequestDescriptor, DiskUsageResponse, DiskUsageRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Analyzes the disk usage of each field of an index or data stream.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-disk-usage.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DiskUsageResponse DiskUsage(Elastic.Clients.Elasticsearch.Indices indices, Action<DiskUsageRequestDescriptor> configureRequest)
	{
		var descriptor = new DiskUsageRequestDescriptor(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<DiskUsageRequestDescriptor, DiskUsageResponse, DiskUsageRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Analyzes the disk usage of each field of an index or data stream.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-disk-usage.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DiskUsageResponse> DiskUsageAsync<TDocument>(DiskUsageRequestDescriptor<TDocument> descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<DiskUsageRequestDescriptor<TDocument>, DiskUsageResponse, DiskUsageRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Analyzes the disk usage of each field of an index or data stream.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-disk-usage.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DiskUsageResponse> DiskUsageAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices indices, CancellationToken cancellationToken = default)
	{
		var descriptor = new DiskUsageRequestDescriptor<TDocument>(indices);
		descriptor.BeforeRequest();
		return DoRequestAsync<DiskUsageRequestDescriptor<TDocument>, DiskUsageResponse, DiskUsageRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Analyzes the disk usage of each field of an index or data stream.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-disk-usage.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DiskUsageResponse> DiskUsageAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices indices, Action<DiskUsageRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new DiskUsageRequestDescriptor<TDocument>(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<DiskUsageRequestDescriptor<TDocument>, DiskUsageResponse, DiskUsageRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Analyzes the disk usage of each field of an index or data stream.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-disk-usage.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DiskUsageResponse> DiskUsageAsync<TDocument>(CancellationToken cancellationToken = default)
	{
		var descriptor = new DiskUsageRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequestAsync<DiskUsageRequestDescriptor<TDocument>, DiskUsageResponse, DiskUsageRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Analyzes the disk usage of each field of an index or data stream.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-disk-usage.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DiskUsageResponse> DiskUsageAsync<TDocument>(Action<DiskUsageRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new DiskUsageRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<DiskUsageRequestDescriptor<TDocument>, DiskUsageResponse, DiskUsageRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Analyzes the disk usage of each field of an index or data stream.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-disk-usage.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DiskUsageResponse> DiskUsageAsync(DiskUsageRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<DiskUsageRequestDescriptor, DiskUsageResponse, DiskUsageRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Analyzes the disk usage of each field of an index or data stream.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-disk-usage.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DiskUsageResponse> DiskUsageAsync(Elastic.Clients.Elasticsearch.Indices indices, CancellationToken cancellationToken = default)
	{
		var descriptor = new DiskUsageRequestDescriptor(indices);
		descriptor.BeforeRequest();
		return DoRequestAsync<DiskUsageRequestDescriptor, DiskUsageResponse, DiskUsageRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Analyzes the disk usage of each field of an index or data stream.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-disk-usage.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DiskUsageResponse> DiskUsageAsync(Elastic.Clients.Elasticsearch.Indices indices, Action<DiskUsageRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new DiskUsageRequestDescriptor(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<DiskUsageRequestDescriptor, DiskUsageResponse, DiskUsageRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Aggregates a time series (TSDS) index and stores pre-computed statistical summaries (<c>min</c>, <c>max</c>, <c>sum</c>, <c>value_count</c> and <c>avg</c>) for each metric field grouped by a configured time interval.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-downsample-data-stream.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DownsampleResponse Downsample(DownsampleRequest request)
	{
		request.BeforeRequest();
		return DoRequest<DownsampleRequest, DownsampleResponse, DownsampleRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Aggregates a time series (TSDS) index and stores pre-computed statistical summaries (<c>min</c>, <c>max</c>, <c>sum</c>, <c>value_count</c> and <c>avg</c>) for each metric field grouped by a configured time interval.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-downsample-data-stream.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DownsampleResponse> DownsampleAsync(DownsampleRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<DownsampleRequest, DownsampleResponse, DownsampleRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Aggregates a time series (TSDS) index and stores pre-computed statistical summaries (<c>min</c>, <c>max</c>, <c>sum</c>, <c>value_count</c> and <c>avg</c>) for each metric field grouped by a configured time interval.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-downsample-data-stream.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DownsampleResponse Downsample<TDocument>(DownsampleRequestDescriptor<TDocument> descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<DownsampleRequestDescriptor<TDocument>, DownsampleResponse, DownsampleRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Aggregates a time series (TSDS) index and stores pre-computed statistical summaries (<c>min</c>, <c>max</c>, <c>sum</c>, <c>value_count</c> and <c>avg</c>) for each metric field grouped by a configured time interval.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-downsample-data-stream.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DownsampleResponse Downsample<TDocument>(Elastic.Clients.Elasticsearch.IndexManagement.DownsampleConfig config, Elastic.Clients.Elasticsearch.IndexName index, Elastic.Clients.Elasticsearch.IndexName targetIndex)
	{
		var descriptor = new DownsampleRequestDescriptor<TDocument>(config, index, targetIndex);
		descriptor.BeforeRequest();
		return DoRequest<DownsampleRequestDescriptor<TDocument>, DownsampleResponse, DownsampleRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Aggregates a time series (TSDS) index and stores pre-computed statistical summaries (<c>min</c>, <c>max</c>, <c>sum</c>, <c>value_count</c> and <c>avg</c>) for each metric field grouped by a configured time interval.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-downsample-data-stream.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DownsampleResponse Downsample<TDocument>(Elastic.Clients.Elasticsearch.IndexManagement.DownsampleConfig config, Elastic.Clients.Elasticsearch.IndexName index, Elastic.Clients.Elasticsearch.IndexName targetIndex, Action<DownsampleRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new DownsampleRequestDescriptor<TDocument>(config, index, targetIndex);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<DownsampleRequestDescriptor<TDocument>, DownsampleResponse, DownsampleRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Aggregates a time series (TSDS) index and stores pre-computed statistical summaries (<c>min</c>, <c>max</c>, <c>sum</c>, <c>value_count</c> and <c>avg</c>) for each metric field grouped by a configured time interval.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-downsample-data-stream.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DownsampleResponse Downsample(DownsampleRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<DownsampleRequestDescriptor, DownsampleResponse, DownsampleRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Aggregates a time series (TSDS) index and stores pre-computed statistical summaries (<c>min</c>, <c>max</c>, <c>sum</c>, <c>value_count</c> and <c>avg</c>) for each metric field grouped by a configured time interval.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-downsample-data-stream.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DownsampleResponse Downsample(Elastic.Clients.Elasticsearch.IndexManagement.DownsampleConfig config, Elastic.Clients.Elasticsearch.IndexName index, Elastic.Clients.Elasticsearch.IndexName targetIndex)
	{
		var descriptor = new DownsampleRequestDescriptor(config, index, targetIndex);
		descriptor.BeforeRequest();
		return DoRequest<DownsampleRequestDescriptor, DownsampleResponse, DownsampleRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Aggregates a time series (TSDS) index and stores pre-computed statistical summaries (<c>min</c>, <c>max</c>, <c>sum</c>, <c>value_count</c> and <c>avg</c>) for each metric field grouped by a configured time interval.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-downsample-data-stream.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DownsampleResponse Downsample(Elastic.Clients.Elasticsearch.IndexManagement.DownsampleConfig config, Elastic.Clients.Elasticsearch.IndexName index, Elastic.Clients.Elasticsearch.IndexName targetIndex, Action<DownsampleRequestDescriptor> configureRequest)
	{
		var descriptor = new DownsampleRequestDescriptor(config, index, targetIndex);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<DownsampleRequestDescriptor, DownsampleResponse, DownsampleRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Aggregates a time series (TSDS) index and stores pre-computed statistical summaries (<c>min</c>, <c>max</c>, <c>sum</c>, <c>value_count</c> and <c>avg</c>) for each metric field grouped by a configured time interval.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-downsample-data-stream.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DownsampleResponse> DownsampleAsync<TDocument>(DownsampleRequestDescriptor<TDocument> descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<DownsampleRequestDescriptor<TDocument>, DownsampleResponse, DownsampleRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Aggregates a time series (TSDS) index and stores pre-computed statistical summaries (<c>min</c>, <c>max</c>, <c>sum</c>, <c>value_count</c> and <c>avg</c>) for each metric field grouped by a configured time interval.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-downsample-data-stream.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DownsampleResponse> DownsampleAsync<TDocument>(Elastic.Clients.Elasticsearch.IndexManagement.DownsampleConfig config, Elastic.Clients.Elasticsearch.IndexName index, Elastic.Clients.Elasticsearch.IndexName targetIndex, CancellationToken cancellationToken = default)
	{
		var descriptor = new DownsampleRequestDescriptor<TDocument>(config, index, targetIndex);
		descriptor.BeforeRequest();
		return DoRequestAsync<DownsampleRequestDescriptor<TDocument>, DownsampleResponse, DownsampleRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Aggregates a time series (TSDS) index and stores pre-computed statistical summaries (<c>min</c>, <c>max</c>, <c>sum</c>, <c>value_count</c> and <c>avg</c>) for each metric field grouped by a configured time interval.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-downsample-data-stream.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DownsampleResponse> DownsampleAsync<TDocument>(Elastic.Clients.Elasticsearch.IndexManagement.DownsampleConfig config, Elastic.Clients.Elasticsearch.IndexName index, Elastic.Clients.Elasticsearch.IndexName targetIndex, Action<DownsampleRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new DownsampleRequestDescriptor<TDocument>(config, index, targetIndex);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<DownsampleRequestDescriptor<TDocument>, DownsampleResponse, DownsampleRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Aggregates a time series (TSDS) index and stores pre-computed statistical summaries (<c>min</c>, <c>max</c>, <c>sum</c>, <c>value_count</c> and <c>avg</c>) for each metric field grouped by a configured time interval.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-downsample-data-stream.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DownsampleResponse> DownsampleAsync(DownsampleRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<DownsampleRequestDescriptor, DownsampleResponse, DownsampleRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Aggregates a time series (TSDS) index and stores pre-computed statistical summaries (<c>min</c>, <c>max</c>, <c>sum</c>, <c>value_count</c> and <c>avg</c>) for each metric field grouped by a configured time interval.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-downsample-data-stream.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DownsampleResponse> DownsampleAsync(Elastic.Clients.Elasticsearch.IndexManagement.DownsampleConfig config, Elastic.Clients.Elasticsearch.IndexName index, Elastic.Clients.Elasticsearch.IndexName targetIndex, CancellationToken cancellationToken = default)
	{
		var descriptor = new DownsampleRequestDescriptor(config, index, targetIndex);
		descriptor.BeforeRequest();
		return DoRequestAsync<DownsampleRequestDescriptor, DownsampleResponse, DownsampleRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Aggregates a time series (TSDS) index and stores pre-computed statistical summaries (<c>min</c>, <c>max</c>, <c>sum</c>, <c>value_count</c> and <c>avg</c>) for each metric field grouped by a configured time interval.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-downsample-data-stream.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DownsampleResponse> DownsampleAsync(Elastic.Clients.Elasticsearch.IndexManagement.DownsampleConfig config, Elastic.Clients.Elasticsearch.IndexName index, Elastic.Clients.Elasticsearch.IndexName targetIndex, Action<DownsampleRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new DownsampleRequestDescriptor(config, index, targetIndex);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<DownsampleRequestDescriptor, DownsampleResponse, DownsampleRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Check indices.
	/// Checks if one or more indices, index aliases, or data streams exist.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-exists.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ExistsResponse Exists(ExistsRequest request)
	{
		request.BeforeRequest();
		return DoRequest<ExistsRequest, ExistsResponse, ExistsRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Check indices.
	/// Checks if one or more indices, index aliases, or data streams exist.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-exists.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ExistsResponse> ExistsAsync(ExistsRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<ExistsRequest, ExistsResponse, ExistsRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Check indices.
	/// Checks if one or more indices, index aliases, or data streams exist.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-exists.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ExistsResponse Exists<TDocument>(ExistsRequestDescriptor<TDocument> descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<ExistsRequestDescriptor<TDocument>, ExistsResponse, ExistsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Check indices.
	/// Checks if one or more indices, index aliases, or data streams exist.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-exists.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ExistsResponse Exists<TDocument>(Elastic.Clients.Elasticsearch.Indices indices)
	{
		var descriptor = new ExistsRequestDescriptor<TDocument>(indices);
		descriptor.BeforeRequest();
		return DoRequest<ExistsRequestDescriptor<TDocument>, ExistsResponse, ExistsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Check indices.
	/// Checks if one or more indices, index aliases, or data streams exist.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-exists.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ExistsResponse Exists<TDocument>(Elastic.Clients.Elasticsearch.Indices indices, Action<ExistsRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new ExistsRequestDescriptor<TDocument>(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<ExistsRequestDescriptor<TDocument>, ExistsResponse, ExistsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Check indices.
	/// Checks if one or more indices, index aliases, or data streams exist.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-exists.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ExistsResponse Exists<TDocument>()
	{
		var descriptor = new ExistsRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequest<ExistsRequestDescriptor<TDocument>, ExistsResponse, ExistsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Check indices.
	/// Checks if one or more indices, index aliases, or data streams exist.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-exists.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ExistsResponse Exists<TDocument>(Action<ExistsRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new ExistsRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<ExistsRequestDescriptor<TDocument>, ExistsResponse, ExistsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Check indices.
	/// Checks if one or more indices, index aliases, or data streams exist.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-exists.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ExistsResponse Exists(ExistsRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<ExistsRequestDescriptor, ExistsResponse, ExistsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Check indices.
	/// Checks if one or more indices, index aliases, or data streams exist.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-exists.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ExistsResponse Exists(Elastic.Clients.Elasticsearch.Indices indices)
	{
		var descriptor = new ExistsRequestDescriptor(indices);
		descriptor.BeforeRequest();
		return DoRequest<ExistsRequestDescriptor, ExistsResponse, ExistsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Check indices.
	/// Checks if one or more indices, index aliases, or data streams exist.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-exists.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ExistsResponse Exists(Elastic.Clients.Elasticsearch.Indices indices, Action<ExistsRequestDescriptor> configureRequest)
	{
		var descriptor = new ExistsRequestDescriptor(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<ExistsRequestDescriptor, ExistsResponse, ExistsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Check indices.
	/// Checks if one or more indices, index aliases, or data streams exist.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-exists.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ExistsResponse> ExistsAsync<TDocument>(ExistsRequestDescriptor<TDocument> descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<ExistsRequestDescriptor<TDocument>, ExistsResponse, ExistsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Check indices.
	/// Checks if one or more indices, index aliases, or data streams exist.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-exists.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ExistsResponse> ExistsAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices indices, CancellationToken cancellationToken = default)
	{
		var descriptor = new ExistsRequestDescriptor<TDocument>(indices);
		descriptor.BeforeRequest();
		return DoRequestAsync<ExistsRequestDescriptor<TDocument>, ExistsResponse, ExistsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Check indices.
	/// Checks if one or more indices, index aliases, or data streams exist.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-exists.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ExistsResponse> ExistsAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices indices, Action<ExistsRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new ExistsRequestDescriptor<TDocument>(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<ExistsRequestDescriptor<TDocument>, ExistsResponse, ExistsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Check indices.
	/// Checks if one or more indices, index aliases, or data streams exist.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-exists.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ExistsResponse> ExistsAsync<TDocument>(CancellationToken cancellationToken = default)
	{
		var descriptor = new ExistsRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequestAsync<ExistsRequestDescriptor<TDocument>, ExistsResponse, ExistsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Check indices.
	/// Checks if one or more indices, index aliases, or data streams exist.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-exists.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ExistsResponse> ExistsAsync<TDocument>(Action<ExistsRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new ExistsRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<ExistsRequestDescriptor<TDocument>, ExistsResponse, ExistsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Check indices.
	/// Checks if one or more indices, index aliases, or data streams exist.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-exists.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ExistsResponse> ExistsAsync(ExistsRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<ExistsRequestDescriptor, ExistsResponse, ExistsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Check indices.
	/// Checks if one or more indices, index aliases, or data streams exist.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-exists.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ExistsResponse> ExistsAsync(Elastic.Clients.Elasticsearch.Indices indices, CancellationToken cancellationToken = default)
	{
		var descriptor = new ExistsRequestDescriptor(indices);
		descriptor.BeforeRequest();
		return DoRequestAsync<ExistsRequestDescriptor, ExistsResponse, ExistsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Check indices.
	/// Checks if one or more indices, index aliases, or data streams exist.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-exists.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ExistsResponse> ExistsAsync(Elastic.Clients.Elasticsearch.Indices indices, Action<ExistsRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new ExistsRequestDescriptor(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<ExistsRequestDescriptor, ExistsResponse, ExistsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Check aliases.
	/// Checks if one or more data stream or index aliases exist.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ExistsAliasResponse ExistsAlias(ExistsAliasRequest request)
	{
		request.BeforeRequest();
		return DoRequest<ExistsAliasRequest, ExistsAliasResponse, ExistsAliasRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Check aliases.
	/// Checks if one or more data stream or index aliases exist.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ExistsAliasResponse> ExistsAliasAsync(ExistsAliasRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<ExistsAliasRequest, ExistsAliasResponse, ExistsAliasRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Check aliases.
	/// Checks if one or more data stream or index aliases exist.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ExistsAliasResponse ExistsAlias<TDocument>(ExistsAliasRequestDescriptor<TDocument> descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<ExistsAliasRequestDescriptor<TDocument>, ExistsAliasResponse, ExistsAliasRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Check aliases.
	/// Checks if one or more data stream or index aliases exist.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ExistsAliasResponse ExistsAlias<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices, Elastic.Clients.Elasticsearch.Names name)
	{
		var descriptor = new ExistsAliasRequestDescriptor<TDocument>(indices, name);
		descriptor.BeforeRequest();
		return DoRequest<ExistsAliasRequestDescriptor<TDocument>, ExistsAliasResponse, ExistsAliasRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Check aliases.
	/// Checks if one or more data stream or index aliases exist.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ExistsAliasResponse ExistsAlias<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices, Elastic.Clients.Elasticsearch.Names name, Action<ExistsAliasRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new ExistsAliasRequestDescriptor<TDocument>(indices, name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<ExistsAliasRequestDescriptor<TDocument>, ExistsAliasResponse, ExistsAliasRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Check aliases.
	/// Checks if one or more data stream or index aliases exist.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ExistsAliasResponse ExistsAlias<TDocument>(Elastic.Clients.Elasticsearch.Names name)
	{
		var descriptor = new ExistsAliasRequestDescriptor<TDocument>(name);
		descriptor.BeforeRequest();
		return DoRequest<ExistsAliasRequestDescriptor<TDocument>, ExistsAliasResponse, ExistsAliasRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Check aliases.
	/// Checks if one or more data stream or index aliases exist.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ExistsAliasResponse ExistsAlias<TDocument>(Elastic.Clients.Elasticsearch.Names name, Action<ExistsAliasRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new ExistsAliasRequestDescriptor<TDocument>(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<ExistsAliasRequestDescriptor<TDocument>, ExistsAliasResponse, ExistsAliasRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Check aliases.
	/// Checks if one or more data stream or index aliases exist.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ExistsAliasResponse ExistsAlias(ExistsAliasRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<ExistsAliasRequestDescriptor, ExistsAliasResponse, ExistsAliasRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Check aliases.
	/// Checks if one or more data stream or index aliases exist.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ExistsAliasResponse ExistsAlias(Elastic.Clients.Elasticsearch.Indices? indices, Elastic.Clients.Elasticsearch.Names name)
	{
		var descriptor = new ExistsAliasRequestDescriptor(indices, name);
		descriptor.BeforeRequest();
		return DoRequest<ExistsAliasRequestDescriptor, ExistsAliasResponse, ExistsAliasRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Check aliases.
	/// Checks if one or more data stream or index aliases exist.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ExistsAliasResponse ExistsAlias(Elastic.Clients.Elasticsearch.Indices? indices, Elastic.Clients.Elasticsearch.Names name, Action<ExistsAliasRequestDescriptor> configureRequest)
	{
		var descriptor = new ExistsAliasRequestDescriptor(indices, name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<ExistsAliasRequestDescriptor, ExistsAliasResponse, ExistsAliasRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Check aliases.
	/// Checks if one or more data stream or index aliases exist.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ExistsAliasResponse ExistsAlias(Elastic.Clients.Elasticsearch.Names name)
	{
		var descriptor = new ExistsAliasRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequest<ExistsAliasRequestDescriptor, ExistsAliasResponse, ExistsAliasRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Check aliases.
	/// Checks if one or more data stream or index aliases exist.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ExistsAliasResponse ExistsAlias(Elastic.Clients.Elasticsearch.Names name, Action<ExistsAliasRequestDescriptor> configureRequest)
	{
		var descriptor = new ExistsAliasRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<ExistsAliasRequestDescriptor, ExistsAliasResponse, ExistsAliasRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Check aliases.
	/// Checks if one or more data stream or index aliases exist.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ExistsAliasResponse> ExistsAliasAsync<TDocument>(ExistsAliasRequestDescriptor<TDocument> descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<ExistsAliasRequestDescriptor<TDocument>, ExistsAliasResponse, ExistsAliasRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Check aliases.
	/// Checks if one or more data stream or index aliases exist.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ExistsAliasResponse> ExistsAliasAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices, Elastic.Clients.Elasticsearch.Names name, CancellationToken cancellationToken = default)
	{
		var descriptor = new ExistsAliasRequestDescriptor<TDocument>(indices, name);
		descriptor.BeforeRequest();
		return DoRequestAsync<ExistsAliasRequestDescriptor<TDocument>, ExistsAliasResponse, ExistsAliasRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Check aliases.
	/// Checks if one or more data stream or index aliases exist.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ExistsAliasResponse> ExistsAliasAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices, Elastic.Clients.Elasticsearch.Names name, Action<ExistsAliasRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new ExistsAliasRequestDescriptor<TDocument>(indices, name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<ExistsAliasRequestDescriptor<TDocument>, ExistsAliasResponse, ExistsAliasRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Check aliases.
	/// Checks if one or more data stream or index aliases exist.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ExistsAliasResponse> ExistsAliasAsync<TDocument>(Elastic.Clients.Elasticsearch.Names name, CancellationToken cancellationToken = default)
	{
		var descriptor = new ExistsAliasRequestDescriptor<TDocument>(name);
		descriptor.BeforeRequest();
		return DoRequestAsync<ExistsAliasRequestDescriptor<TDocument>, ExistsAliasResponse, ExistsAliasRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Check aliases.
	/// Checks if one or more data stream or index aliases exist.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ExistsAliasResponse> ExistsAliasAsync<TDocument>(Elastic.Clients.Elasticsearch.Names name, Action<ExistsAliasRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new ExistsAliasRequestDescriptor<TDocument>(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<ExistsAliasRequestDescriptor<TDocument>, ExistsAliasResponse, ExistsAliasRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Check aliases.
	/// Checks if one or more data stream or index aliases exist.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ExistsAliasResponse> ExistsAliasAsync(ExistsAliasRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<ExistsAliasRequestDescriptor, ExistsAliasResponse, ExistsAliasRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Check aliases.
	/// Checks if one or more data stream or index aliases exist.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ExistsAliasResponse> ExistsAliasAsync(Elastic.Clients.Elasticsearch.Indices? indices, Elastic.Clients.Elasticsearch.Names name, CancellationToken cancellationToken = default)
	{
		var descriptor = new ExistsAliasRequestDescriptor(indices, name);
		descriptor.BeforeRequest();
		return DoRequestAsync<ExistsAliasRequestDescriptor, ExistsAliasResponse, ExistsAliasRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Check aliases.
	/// Checks if one or more data stream or index aliases exist.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ExistsAliasResponse> ExistsAliasAsync(Elastic.Clients.Elasticsearch.Indices? indices, Elastic.Clients.Elasticsearch.Names name, Action<ExistsAliasRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new ExistsAliasRequestDescriptor(indices, name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<ExistsAliasRequestDescriptor, ExistsAliasResponse, ExistsAliasRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Check aliases.
	/// Checks if one or more data stream or index aliases exist.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ExistsAliasResponse> ExistsAliasAsync(Elastic.Clients.Elasticsearch.Names name, CancellationToken cancellationToken = default)
	{
		var descriptor = new ExistsAliasRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequestAsync<ExistsAliasRequestDescriptor, ExistsAliasResponse, ExistsAliasRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Check aliases.
	/// Checks if one or more data stream or index aliases exist.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ExistsAliasResponse> ExistsAliasAsync(Elastic.Clients.Elasticsearch.Names name, Action<ExistsAliasRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new ExistsAliasRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<ExistsAliasRequestDescriptor, ExistsAliasResponse, ExistsAliasRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Returns information about whether a particular index template exists.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/index-templates.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ExistsIndexTemplateResponse ExistsIndexTemplate(ExistsIndexTemplateRequest request)
	{
		request.BeforeRequest();
		return DoRequest<ExistsIndexTemplateRequest, ExistsIndexTemplateResponse, ExistsIndexTemplateRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Returns information about whether a particular index template exists.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/index-templates.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ExistsIndexTemplateResponse> ExistsIndexTemplateAsync(ExistsIndexTemplateRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<ExistsIndexTemplateRequest, ExistsIndexTemplateResponse, ExistsIndexTemplateRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Returns information about whether a particular index template exists.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/index-templates.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ExistsIndexTemplateResponse ExistsIndexTemplate(ExistsIndexTemplateRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<ExistsIndexTemplateRequestDescriptor, ExistsIndexTemplateResponse, ExistsIndexTemplateRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Returns information about whether a particular index template exists.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/index-templates.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ExistsIndexTemplateResponse ExistsIndexTemplate(Elastic.Clients.Elasticsearch.Name name)
	{
		var descriptor = new ExistsIndexTemplateRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequest<ExistsIndexTemplateRequestDescriptor, ExistsIndexTemplateResponse, ExistsIndexTemplateRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Returns information about whether a particular index template exists.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/index-templates.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ExistsIndexTemplateResponse ExistsIndexTemplate(Elastic.Clients.Elasticsearch.Name name, Action<ExistsIndexTemplateRequestDescriptor> configureRequest)
	{
		var descriptor = new ExistsIndexTemplateRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<ExistsIndexTemplateRequestDescriptor, ExistsIndexTemplateResponse, ExistsIndexTemplateRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Returns information about whether a particular index template exists.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/index-templates.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ExistsIndexTemplateResponse> ExistsIndexTemplateAsync(ExistsIndexTemplateRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<ExistsIndexTemplateRequestDescriptor, ExistsIndexTemplateResponse, ExistsIndexTemplateRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Returns information about whether a particular index template exists.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/index-templates.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ExistsIndexTemplateResponse> ExistsIndexTemplateAsync(Elastic.Clients.Elasticsearch.Name name, CancellationToken cancellationToken = default)
	{
		var descriptor = new ExistsIndexTemplateRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequestAsync<ExistsIndexTemplateRequestDescriptor, ExistsIndexTemplateResponse, ExistsIndexTemplateRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Returns information about whether a particular index template exists.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/index-templates.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ExistsIndexTemplateResponse> ExistsIndexTemplateAsync(Elastic.Clients.Elasticsearch.Name name, Action<ExistsIndexTemplateRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new ExistsIndexTemplateRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<ExistsIndexTemplateRequestDescriptor, ExistsIndexTemplateResponse, ExistsIndexTemplateRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Check existence of index templates.
	/// Returns information about whether a particular index template exists.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-template-exists-v1.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ExistsTemplateResponse ExistsTemplate(ExistsTemplateRequest request)
	{
		request.BeforeRequest();
		return DoRequest<ExistsTemplateRequest, ExistsTemplateResponse, ExistsTemplateRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Check existence of index templates.
	/// Returns information about whether a particular index template exists.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-template-exists-v1.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ExistsTemplateResponse> ExistsTemplateAsync(ExistsTemplateRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<ExistsTemplateRequest, ExistsTemplateResponse, ExistsTemplateRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Check existence of index templates.
	/// Returns information about whether a particular index template exists.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-template-exists-v1.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ExistsTemplateResponse ExistsTemplate(ExistsTemplateRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<ExistsTemplateRequestDescriptor, ExistsTemplateResponse, ExistsTemplateRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Check existence of index templates.
	/// Returns information about whether a particular index template exists.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-template-exists-v1.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ExistsTemplateResponse ExistsTemplate(Elastic.Clients.Elasticsearch.Names name)
	{
		var descriptor = new ExistsTemplateRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequest<ExistsTemplateRequestDescriptor, ExistsTemplateResponse, ExistsTemplateRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Check existence of index templates.
	/// Returns information about whether a particular index template exists.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-template-exists-v1.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ExistsTemplateResponse ExistsTemplate(Elastic.Clients.Elasticsearch.Names name, Action<ExistsTemplateRequestDescriptor> configureRequest)
	{
		var descriptor = new ExistsTemplateRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<ExistsTemplateRequestDescriptor, ExistsTemplateResponse, ExistsTemplateRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Check existence of index templates.
	/// Returns information about whether a particular index template exists.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-template-exists-v1.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ExistsTemplateResponse> ExistsTemplateAsync(ExistsTemplateRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<ExistsTemplateRequestDescriptor, ExistsTemplateResponse, ExistsTemplateRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Check existence of index templates.
	/// Returns information about whether a particular index template exists.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-template-exists-v1.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ExistsTemplateResponse> ExistsTemplateAsync(Elastic.Clients.Elasticsearch.Names name, CancellationToken cancellationToken = default)
	{
		var descriptor = new ExistsTemplateRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequestAsync<ExistsTemplateRequestDescriptor, ExistsTemplateResponse, ExistsTemplateRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Check existence of index templates.
	/// Returns information about whether a particular index template exists.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-template-exists-v1.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ExistsTemplateResponse> ExistsTemplateAsync(Elastic.Clients.Elasticsearch.Names name, Action<ExistsTemplateRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new ExistsTemplateRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<ExistsTemplateRequestDescriptor, ExistsTemplateResponse, ExistsTemplateRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get the status for a data stream lifecycle.
	/// Retrieves information about an index or data stream’s current data stream lifecycle status, such as time since index creation, time since rollover, the lifecycle configuration managing the index, or any errors encountered during lifecycle execution.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/data-streams-explain-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ExplainDataLifecycleResponse ExplainDataLifecycle(ExplainDataLifecycleRequest request)
	{
		request.BeforeRequest();
		return DoRequest<ExplainDataLifecycleRequest, ExplainDataLifecycleResponse, ExplainDataLifecycleRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Get the status for a data stream lifecycle.
	/// Retrieves information about an index or data stream’s current data stream lifecycle status, such as time since index creation, time since rollover, the lifecycle configuration managing the index, or any errors encountered during lifecycle execution.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/data-streams-explain-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ExplainDataLifecycleResponse> ExplainDataLifecycleAsync(ExplainDataLifecycleRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<ExplainDataLifecycleRequest, ExplainDataLifecycleResponse, ExplainDataLifecycleRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get the status for a data stream lifecycle.
	/// Retrieves information about an index or data stream’s current data stream lifecycle status, such as time since index creation, time since rollover, the lifecycle configuration managing the index, or any errors encountered during lifecycle execution.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/data-streams-explain-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ExplainDataLifecycleResponse ExplainDataLifecycle<TDocument>(ExplainDataLifecycleRequestDescriptor<TDocument> descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<ExplainDataLifecycleRequestDescriptor<TDocument>, ExplainDataLifecycleResponse, ExplainDataLifecycleRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get the status for a data stream lifecycle.
	/// Retrieves information about an index or data stream’s current data stream lifecycle status, such as time since index creation, time since rollover, the lifecycle configuration managing the index, or any errors encountered during lifecycle execution.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/data-streams-explain-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ExplainDataLifecycleResponse ExplainDataLifecycle<TDocument>(Elastic.Clients.Elasticsearch.Indices indices)
	{
		var descriptor = new ExplainDataLifecycleRequestDescriptor<TDocument>(indices);
		descriptor.BeforeRequest();
		return DoRequest<ExplainDataLifecycleRequestDescriptor<TDocument>, ExplainDataLifecycleResponse, ExplainDataLifecycleRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get the status for a data stream lifecycle.
	/// Retrieves information about an index or data stream’s current data stream lifecycle status, such as time since index creation, time since rollover, the lifecycle configuration managing the index, or any errors encountered during lifecycle execution.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/data-streams-explain-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ExplainDataLifecycleResponse ExplainDataLifecycle<TDocument>(Elastic.Clients.Elasticsearch.Indices indices, Action<ExplainDataLifecycleRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new ExplainDataLifecycleRequestDescriptor<TDocument>(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<ExplainDataLifecycleRequestDescriptor<TDocument>, ExplainDataLifecycleResponse, ExplainDataLifecycleRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get the status for a data stream lifecycle.
	/// Retrieves information about an index or data stream’s current data stream lifecycle status, such as time since index creation, time since rollover, the lifecycle configuration managing the index, or any errors encountered during lifecycle execution.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/data-streams-explain-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ExplainDataLifecycleResponse ExplainDataLifecycle<TDocument>()
	{
		var descriptor = new ExplainDataLifecycleRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequest<ExplainDataLifecycleRequestDescriptor<TDocument>, ExplainDataLifecycleResponse, ExplainDataLifecycleRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get the status for a data stream lifecycle.
	/// Retrieves information about an index or data stream’s current data stream lifecycle status, such as time since index creation, time since rollover, the lifecycle configuration managing the index, or any errors encountered during lifecycle execution.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/data-streams-explain-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ExplainDataLifecycleResponse ExplainDataLifecycle<TDocument>(Action<ExplainDataLifecycleRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new ExplainDataLifecycleRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<ExplainDataLifecycleRequestDescriptor<TDocument>, ExplainDataLifecycleResponse, ExplainDataLifecycleRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get the status for a data stream lifecycle.
	/// Retrieves information about an index or data stream’s current data stream lifecycle status, such as time since index creation, time since rollover, the lifecycle configuration managing the index, or any errors encountered during lifecycle execution.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/data-streams-explain-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ExplainDataLifecycleResponse ExplainDataLifecycle(ExplainDataLifecycleRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<ExplainDataLifecycleRequestDescriptor, ExplainDataLifecycleResponse, ExplainDataLifecycleRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get the status for a data stream lifecycle.
	/// Retrieves information about an index or data stream’s current data stream lifecycle status, such as time since index creation, time since rollover, the lifecycle configuration managing the index, or any errors encountered during lifecycle execution.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/data-streams-explain-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ExplainDataLifecycleResponse ExplainDataLifecycle(Elastic.Clients.Elasticsearch.Indices indices)
	{
		var descriptor = new ExplainDataLifecycleRequestDescriptor(indices);
		descriptor.BeforeRequest();
		return DoRequest<ExplainDataLifecycleRequestDescriptor, ExplainDataLifecycleResponse, ExplainDataLifecycleRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get the status for a data stream lifecycle.
	/// Retrieves information about an index or data stream’s current data stream lifecycle status, such as time since index creation, time since rollover, the lifecycle configuration managing the index, or any errors encountered during lifecycle execution.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/data-streams-explain-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ExplainDataLifecycleResponse ExplainDataLifecycle(Elastic.Clients.Elasticsearch.Indices indices, Action<ExplainDataLifecycleRequestDescriptor> configureRequest)
	{
		var descriptor = new ExplainDataLifecycleRequestDescriptor(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<ExplainDataLifecycleRequestDescriptor, ExplainDataLifecycleResponse, ExplainDataLifecycleRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get the status for a data stream lifecycle.
	/// Retrieves information about an index or data stream’s current data stream lifecycle status, such as time since index creation, time since rollover, the lifecycle configuration managing the index, or any errors encountered during lifecycle execution.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/data-streams-explain-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ExplainDataLifecycleResponse> ExplainDataLifecycleAsync<TDocument>(ExplainDataLifecycleRequestDescriptor<TDocument> descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<ExplainDataLifecycleRequestDescriptor<TDocument>, ExplainDataLifecycleResponse, ExplainDataLifecycleRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get the status for a data stream lifecycle.
	/// Retrieves information about an index or data stream’s current data stream lifecycle status, such as time since index creation, time since rollover, the lifecycle configuration managing the index, or any errors encountered during lifecycle execution.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/data-streams-explain-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ExplainDataLifecycleResponse> ExplainDataLifecycleAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices indices, CancellationToken cancellationToken = default)
	{
		var descriptor = new ExplainDataLifecycleRequestDescriptor<TDocument>(indices);
		descriptor.BeforeRequest();
		return DoRequestAsync<ExplainDataLifecycleRequestDescriptor<TDocument>, ExplainDataLifecycleResponse, ExplainDataLifecycleRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get the status for a data stream lifecycle.
	/// Retrieves information about an index or data stream’s current data stream lifecycle status, such as time since index creation, time since rollover, the lifecycle configuration managing the index, or any errors encountered during lifecycle execution.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/data-streams-explain-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ExplainDataLifecycleResponse> ExplainDataLifecycleAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices indices, Action<ExplainDataLifecycleRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new ExplainDataLifecycleRequestDescriptor<TDocument>(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<ExplainDataLifecycleRequestDescriptor<TDocument>, ExplainDataLifecycleResponse, ExplainDataLifecycleRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get the status for a data stream lifecycle.
	/// Retrieves information about an index or data stream’s current data stream lifecycle status, such as time since index creation, time since rollover, the lifecycle configuration managing the index, or any errors encountered during lifecycle execution.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/data-streams-explain-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ExplainDataLifecycleResponse> ExplainDataLifecycleAsync<TDocument>(CancellationToken cancellationToken = default)
	{
		var descriptor = new ExplainDataLifecycleRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequestAsync<ExplainDataLifecycleRequestDescriptor<TDocument>, ExplainDataLifecycleResponse, ExplainDataLifecycleRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get the status for a data stream lifecycle.
	/// Retrieves information about an index or data stream’s current data stream lifecycle status, such as time since index creation, time since rollover, the lifecycle configuration managing the index, or any errors encountered during lifecycle execution.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/data-streams-explain-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ExplainDataLifecycleResponse> ExplainDataLifecycleAsync<TDocument>(Action<ExplainDataLifecycleRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new ExplainDataLifecycleRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<ExplainDataLifecycleRequestDescriptor<TDocument>, ExplainDataLifecycleResponse, ExplainDataLifecycleRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get the status for a data stream lifecycle.
	/// Retrieves information about an index or data stream’s current data stream lifecycle status, such as time since index creation, time since rollover, the lifecycle configuration managing the index, or any errors encountered during lifecycle execution.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/data-streams-explain-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ExplainDataLifecycleResponse> ExplainDataLifecycleAsync(ExplainDataLifecycleRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<ExplainDataLifecycleRequestDescriptor, ExplainDataLifecycleResponse, ExplainDataLifecycleRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get the status for a data stream lifecycle.
	/// Retrieves information about an index or data stream’s current data stream lifecycle status, such as time since index creation, time since rollover, the lifecycle configuration managing the index, or any errors encountered during lifecycle execution.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/data-streams-explain-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ExplainDataLifecycleResponse> ExplainDataLifecycleAsync(Elastic.Clients.Elasticsearch.Indices indices, CancellationToken cancellationToken = default)
	{
		var descriptor = new ExplainDataLifecycleRequestDescriptor(indices);
		descriptor.BeforeRequest();
		return DoRequestAsync<ExplainDataLifecycleRequestDescriptor, ExplainDataLifecycleResponse, ExplainDataLifecycleRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get the status for a data stream lifecycle.
	/// Retrieves information about an index or data stream’s current data stream lifecycle status, such as time since index creation, time since rollover, the lifecycle configuration managing the index, or any errors encountered during lifecycle execution.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/data-streams-explain-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ExplainDataLifecycleResponse> ExplainDataLifecycleAsync(Elastic.Clients.Elasticsearch.Indices indices, Action<ExplainDataLifecycleRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new ExplainDataLifecycleRequestDescriptor(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<ExplainDataLifecycleRequestDescriptor, ExplainDataLifecycleResponse, ExplainDataLifecycleRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Returns field usage information for each shard and field of an index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/field-usage-stats.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual FieldUsageStatsResponse FieldUsageStats(FieldUsageStatsRequest request)
	{
		request.BeforeRequest();
		return DoRequest<FieldUsageStatsRequest, FieldUsageStatsResponse, FieldUsageStatsRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Returns field usage information for each shard and field of an index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/field-usage-stats.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<FieldUsageStatsResponse> FieldUsageStatsAsync(FieldUsageStatsRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<FieldUsageStatsRequest, FieldUsageStatsResponse, FieldUsageStatsRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Returns field usage information for each shard and field of an index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/field-usage-stats.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual FieldUsageStatsResponse FieldUsageStats<TDocument>(FieldUsageStatsRequestDescriptor<TDocument> descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<FieldUsageStatsRequestDescriptor<TDocument>, FieldUsageStatsResponse, FieldUsageStatsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Returns field usage information for each shard and field of an index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/field-usage-stats.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual FieldUsageStatsResponse FieldUsageStats<TDocument>(Elastic.Clients.Elasticsearch.Indices indices)
	{
		var descriptor = new FieldUsageStatsRequestDescriptor<TDocument>(indices);
		descriptor.BeforeRequest();
		return DoRequest<FieldUsageStatsRequestDescriptor<TDocument>, FieldUsageStatsResponse, FieldUsageStatsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Returns field usage information for each shard and field of an index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/field-usage-stats.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual FieldUsageStatsResponse FieldUsageStats<TDocument>(Elastic.Clients.Elasticsearch.Indices indices, Action<FieldUsageStatsRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new FieldUsageStatsRequestDescriptor<TDocument>(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<FieldUsageStatsRequestDescriptor<TDocument>, FieldUsageStatsResponse, FieldUsageStatsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Returns field usage information for each shard and field of an index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/field-usage-stats.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual FieldUsageStatsResponse FieldUsageStats<TDocument>()
	{
		var descriptor = new FieldUsageStatsRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequest<FieldUsageStatsRequestDescriptor<TDocument>, FieldUsageStatsResponse, FieldUsageStatsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Returns field usage information for each shard and field of an index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/field-usage-stats.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual FieldUsageStatsResponse FieldUsageStats<TDocument>(Action<FieldUsageStatsRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new FieldUsageStatsRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<FieldUsageStatsRequestDescriptor<TDocument>, FieldUsageStatsResponse, FieldUsageStatsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Returns field usage information for each shard and field of an index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/field-usage-stats.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual FieldUsageStatsResponse FieldUsageStats(FieldUsageStatsRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<FieldUsageStatsRequestDescriptor, FieldUsageStatsResponse, FieldUsageStatsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Returns field usage information for each shard and field of an index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/field-usage-stats.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual FieldUsageStatsResponse FieldUsageStats(Elastic.Clients.Elasticsearch.Indices indices)
	{
		var descriptor = new FieldUsageStatsRequestDescriptor(indices);
		descriptor.BeforeRequest();
		return DoRequest<FieldUsageStatsRequestDescriptor, FieldUsageStatsResponse, FieldUsageStatsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Returns field usage information for each shard and field of an index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/field-usage-stats.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual FieldUsageStatsResponse FieldUsageStats(Elastic.Clients.Elasticsearch.Indices indices, Action<FieldUsageStatsRequestDescriptor> configureRequest)
	{
		var descriptor = new FieldUsageStatsRequestDescriptor(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<FieldUsageStatsRequestDescriptor, FieldUsageStatsResponse, FieldUsageStatsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Returns field usage information for each shard and field of an index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/field-usage-stats.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<FieldUsageStatsResponse> FieldUsageStatsAsync<TDocument>(FieldUsageStatsRequestDescriptor<TDocument> descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<FieldUsageStatsRequestDescriptor<TDocument>, FieldUsageStatsResponse, FieldUsageStatsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Returns field usage information for each shard and field of an index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/field-usage-stats.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<FieldUsageStatsResponse> FieldUsageStatsAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices indices, CancellationToken cancellationToken = default)
	{
		var descriptor = new FieldUsageStatsRequestDescriptor<TDocument>(indices);
		descriptor.BeforeRequest();
		return DoRequestAsync<FieldUsageStatsRequestDescriptor<TDocument>, FieldUsageStatsResponse, FieldUsageStatsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Returns field usage information for each shard and field of an index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/field-usage-stats.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<FieldUsageStatsResponse> FieldUsageStatsAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices indices, Action<FieldUsageStatsRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new FieldUsageStatsRequestDescriptor<TDocument>(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<FieldUsageStatsRequestDescriptor<TDocument>, FieldUsageStatsResponse, FieldUsageStatsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Returns field usage information for each shard and field of an index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/field-usage-stats.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<FieldUsageStatsResponse> FieldUsageStatsAsync<TDocument>(CancellationToken cancellationToken = default)
	{
		var descriptor = new FieldUsageStatsRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequestAsync<FieldUsageStatsRequestDescriptor<TDocument>, FieldUsageStatsResponse, FieldUsageStatsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Returns field usage information for each shard and field of an index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/field-usage-stats.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<FieldUsageStatsResponse> FieldUsageStatsAsync<TDocument>(Action<FieldUsageStatsRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new FieldUsageStatsRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<FieldUsageStatsRequestDescriptor<TDocument>, FieldUsageStatsResponse, FieldUsageStatsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Returns field usage information for each shard and field of an index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/field-usage-stats.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<FieldUsageStatsResponse> FieldUsageStatsAsync(FieldUsageStatsRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<FieldUsageStatsRequestDescriptor, FieldUsageStatsResponse, FieldUsageStatsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Returns field usage information for each shard and field of an index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/field-usage-stats.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<FieldUsageStatsResponse> FieldUsageStatsAsync(Elastic.Clients.Elasticsearch.Indices indices, CancellationToken cancellationToken = default)
	{
		var descriptor = new FieldUsageStatsRequestDescriptor(indices);
		descriptor.BeforeRequest();
		return DoRequestAsync<FieldUsageStatsRequestDescriptor, FieldUsageStatsResponse, FieldUsageStatsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Returns field usage information for each shard and field of an index.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/field-usage-stats.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<FieldUsageStatsResponse> FieldUsageStatsAsync(Elastic.Clients.Elasticsearch.Indices indices, Action<FieldUsageStatsRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new FieldUsageStatsRequestDescriptor(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<FieldUsageStatsRequestDescriptor, FieldUsageStatsResponse, FieldUsageStatsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Flushes one or more data streams or indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-flush.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual FlushResponse Flush(FlushRequest request)
	{
		request.BeforeRequest();
		return DoRequest<FlushRequest, FlushResponse, FlushRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Flushes one or more data streams or indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-flush.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<FlushResponse> FlushAsync(FlushRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<FlushRequest, FlushResponse, FlushRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Flushes one or more data streams or indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-flush.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual FlushResponse Flush<TDocument>(FlushRequestDescriptor<TDocument> descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<FlushRequestDescriptor<TDocument>, FlushResponse, FlushRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Flushes one or more data streams or indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-flush.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual FlushResponse Flush<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices)
	{
		var descriptor = new FlushRequestDescriptor<TDocument>(indices);
		descriptor.BeforeRequest();
		return DoRequest<FlushRequestDescriptor<TDocument>, FlushResponse, FlushRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Flushes one or more data streams or indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-flush.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual FlushResponse Flush<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices, Action<FlushRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new FlushRequestDescriptor<TDocument>(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<FlushRequestDescriptor<TDocument>, FlushResponse, FlushRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Flushes one or more data streams or indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-flush.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual FlushResponse Flush<TDocument>()
	{
		var descriptor = new FlushRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequest<FlushRequestDescriptor<TDocument>, FlushResponse, FlushRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Flushes one or more data streams or indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-flush.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual FlushResponse Flush<TDocument>(Action<FlushRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new FlushRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<FlushRequestDescriptor<TDocument>, FlushResponse, FlushRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Flushes one or more data streams or indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-flush.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual FlushResponse Flush(FlushRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<FlushRequestDescriptor, FlushResponse, FlushRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Flushes one or more data streams or indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-flush.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual FlushResponse Flush(Elastic.Clients.Elasticsearch.Indices? indices)
	{
		var descriptor = new FlushRequestDescriptor(indices);
		descriptor.BeforeRequest();
		return DoRequest<FlushRequestDescriptor, FlushResponse, FlushRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Flushes one or more data streams or indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-flush.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual FlushResponse Flush(Elastic.Clients.Elasticsearch.Indices? indices, Action<FlushRequestDescriptor> configureRequest)
	{
		var descriptor = new FlushRequestDescriptor(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<FlushRequestDescriptor, FlushResponse, FlushRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Flushes one or more data streams or indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-flush.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual FlushResponse Flush()
	{
		var descriptor = new FlushRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequest<FlushRequestDescriptor, FlushResponse, FlushRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Flushes one or more data streams or indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-flush.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual FlushResponse Flush(Action<FlushRequestDescriptor> configureRequest)
	{
		var descriptor = new FlushRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<FlushRequestDescriptor, FlushResponse, FlushRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Flushes one or more data streams or indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-flush.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<FlushResponse> FlushAsync<TDocument>(FlushRequestDescriptor<TDocument> descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<FlushRequestDescriptor<TDocument>, FlushResponse, FlushRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Flushes one or more data streams or indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-flush.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<FlushResponse> FlushAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices, CancellationToken cancellationToken = default)
	{
		var descriptor = new FlushRequestDescriptor<TDocument>(indices);
		descriptor.BeforeRequest();
		return DoRequestAsync<FlushRequestDescriptor<TDocument>, FlushResponse, FlushRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Flushes one or more data streams or indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-flush.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<FlushResponse> FlushAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices, Action<FlushRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new FlushRequestDescriptor<TDocument>(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<FlushRequestDescriptor<TDocument>, FlushResponse, FlushRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Flushes one or more data streams or indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-flush.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<FlushResponse> FlushAsync<TDocument>(CancellationToken cancellationToken = default)
	{
		var descriptor = new FlushRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequestAsync<FlushRequestDescriptor<TDocument>, FlushResponse, FlushRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Flushes one or more data streams or indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-flush.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<FlushResponse> FlushAsync<TDocument>(Action<FlushRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new FlushRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<FlushRequestDescriptor<TDocument>, FlushResponse, FlushRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Flushes one or more data streams or indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-flush.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<FlushResponse> FlushAsync(FlushRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<FlushRequestDescriptor, FlushResponse, FlushRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Flushes one or more data streams or indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-flush.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<FlushResponse> FlushAsync(Elastic.Clients.Elasticsearch.Indices? indices, CancellationToken cancellationToken = default)
	{
		var descriptor = new FlushRequestDescriptor(indices);
		descriptor.BeforeRequest();
		return DoRequestAsync<FlushRequestDescriptor, FlushResponse, FlushRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Flushes one or more data streams or indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-flush.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<FlushResponse> FlushAsync(Elastic.Clients.Elasticsearch.Indices? indices, Action<FlushRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new FlushRequestDescriptor(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<FlushRequestDescriptor, FlushResponse, FlushRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Flushes one or more data streams or indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-flush.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<FlushResponse> FlushAsync(CancellationToken cancellationToken = default)
	{
		var descriptor = new FlushRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequestAsync<FlushRequestDescriptor, FlushResponse, FlushRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Flushes one or more data streams or indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-flush.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<FlushResponse> FlushAsync(Action<FlushRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new FlushRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<FlushRequestDescriptor, FlushResponse, FlushRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Performs the force merge operation on one or more indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-forcemerge.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ForcemergeResponse Forcemerge(ForcemergeRequest request)
	{
		request.BeforeRequest();
		return DoRequest<ForcemergeRequest, ForcemergeResponse, ForcemergeRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Performs the force merge operation on one or more indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-forcemerge.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ForcemergeResponse> ForcemergeAsync(ForcemergeRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<ForcemergeRequest, ForcemergeResponse, ForcemergeRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Performs the force merge operation on one or more indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-forcemerge.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ForcemergeResponse Forcemerge<TDocument>(ForcemergeRequestDescriptor<TDocument> descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<ForcemergeRequestDescriptor<TDocument>, ForcemergeResponse, ForcemergeRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Performs the force merge operation on one or more indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-forcemerge.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ForcemergeResponse Forcemerge<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices)
	{
		var descriptor = new ForcemergeRequestDescriptor<TDocument>(indices);
		descriptor.BeforeRequest();
		return DoRequest<ForcemergeRequestDescriptor<TDocument>, ForcemergeResponse, ForcemergeRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Performs the force merge operation on one or more indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-forcemerge.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ForcemergeResponse Forcemerge<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices, Action<ForcemergeRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new ForcemergeRequestDescriptor<TDocument>(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<ForcemergeRequestDescriptor<TDocument>, ForcemergeResponse, ForcemergeRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Performs the force merge operation on one or more indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-forcemerge.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ForcemergeResponse Forcemerge<TDocument>()
	{
		var descriptor = new ForcemergeRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequest<ForcemergeRequestDescriptor<TDocument>, ForcemergeResponse, ForcemergeRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Performs the force merge operation on one or more indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-forcemerge.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ForcemergeResponse Forcemerge<TDocument>(Action<ForcemergeRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new ForcemergeRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<ForcemergeRequestDescriptor<TDocument>, ForcemergeResponse, ForcemergeRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Performs the force merge operation on one or more indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-forcemerge.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ForcemergeResponse Forcemerge(ForcemergeRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<ForcemergeRequestDescriptor, ForcemergeResponse, ForcemergeRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Performs the force merge operation on one or more indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-forcemerge.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ForcemergeResponse Forcemerge(Elastic.Clients.Elasticsearch.Indices? indices)
	{
		var descriptor = new ForcemergeRequestDescriptor(indices);
		descriptor.BeforeRequest();
		return DoRequest<ForcemergeRequestDescriptor, ForcemergeResponse, ForcemergeRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Performs the force merge operation on one or more indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-forcemerge.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ForcemergeResponse Forcemerge(Elastic.Clients.Elasticsearch.Indices? indices, Action<ForcemergeRequestDescriptor> configureRequest)
	{
		var descriptor = new ForcemergeRequestDescriptor(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<ForcemergeRequestDescriptor, ForcemergeResponse, ForcemergeRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Performs the force merge operation on one or more indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-forcemerge.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ForcemergeResponse Forcemerge()
	{
		var descriptor = new ForcemergeRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequest<ForcemergeRequestDescriptor, ForcemergeResponse, ForcemergeRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Performs the force merge operation on one or more indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-forcemerge.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ForcemergeResponse Forcemerge(Action<ForcemergeRequestDescriptor> configureRequest)
	{
		var descriptor = new ForcemergeRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<ForcemergeRequestDescriptor, ForcemergeResponse, ForcemergeRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Performs the force merge operation on one or more indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-forcemerge.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ForcemergeResponse> ForcemergeAsync<TDocument>(ForcemergeRequestDescriptor<TDocument> descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<ForcemergeRequestDescriptor<TDocument>, ForcemergeResponse, ForcemergeRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Performs the force merge operation on one or more indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-forcemerge.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ForcemergeResponse> ForcemergeAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices, CancellationToken cancellationToken = default)
	{
		var descriptor = new ForcemergeRequestDescriptor<TDocument>(indices);
		descriptor.BeforeRequest();
		return DoRequestAsync<ForcemergeRequestDescriptor<TDocument>, ForcemergeResponse, ForcemergeRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Performs the force merge operation on one or more indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-forcemerge.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ForcemergeResponse> ForcemergeAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices, Action<ForcemergeRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new ForcemergeRequestDescriptor<TDocument>(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<ForcemergeRequestDescriptor<TDocument>, ForcemergeResponse, ForcemergeRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Performs the force merge operation on one or more indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-forcemerge.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ForcemergeResponse> ForcemergeAsync<TDocument>(CancellationToken cancellationToken = default)
	{
		var descriptor = new ForcemergeRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequestAsync<ForcemergeRequestDescriptor<TDocument>, ForcemergeResponse, ForcemergeRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Performs the force merge operation on one or more indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-forcemerge.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ForcemergeResponse> ForcemergeAsync<TDocument>(Action<ForcemergeRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new ForcemergeRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<ForcemergeRequestDescriptor<TDocument>, ForcemergeResponse, ForcemergeRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Performs the force merge operation on one or more indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-forcemerge.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ForcemergeResponse> ForcemergeAsync(ForcemergeRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<ForcemergeRequestDescriptor, ForcemergeResponse, ForcemergeRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Performs the force merge operation on one or more indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-forcemerge.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ForcemergeResponse> ForcemergeAsync(Elastic.Clients.Elasticsearch.Indices? indices, CancellationToken cancellationToken = default)
	{
		var descriptor = new ForcemergeRequestDescriptor(indices);
		descriptor.BeforeRequest();
		return DoRequestAsync<ForcemergeRequestDescriptor, ForcemergeResponse, ForcemergeRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Performs the force merge operation on one or more indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-forcemerge.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ForcemergeResponse> ForcemergeAsync(Elastic.Clients.Elasticsearch.Indices? indices, Action<ForcemergeRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new ForcemergeRequestDescriptor(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<ForcemergeRequestDescriptor, ForcemergeResponse, ForcemergeRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Performs the force merge operation on one or more indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-forcemerge.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ForcemergeResponse> ForcemergeAsync(CancellationToken cancellationToken = default)
	{
		var descriptor = new ForcemergeRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequestAsync<ForcemergeRequestDescriptor, ForcemergeResponse, ForcemergeRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Performs the force merge operation on one or more indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-forcemerge.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ForcemergeResponse> ForcemergeAsync(Action<ForcemergeRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new ForcemergeRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<ForcemergeRequestDescriptor, ForcemergeResponse, ForcemergeRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get index information.
	/// Returns information about one or more indices. For data streams, the API returns information about the
	/// stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetIndexResponse Get(GetIndexRequest request)
	{
		request.BeforeRequest();
		return DoRequest<GetIndexRequest, GetIndexResponse, GetIndexRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Get index information.
	/// Returns information about one or more indices. For data streams, the API returns information about the
	/// stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetIndexResponse> GetAsync(GetIndexRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<GetIndexRequest, GetIndexResponse, GetIndexRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get index information.
	/// Returns information about one or more indices. For data streams, the API returns information about the
	/// stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetIndexResponse Get<TDocument>(GetIndexRequestDescriptor<TDocument> descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<GetIndexRequestDescriptor<TDocument>, GetIndexResponse, GetIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get index information.
	/// Returns information about one or more indices. For data streams, the API returns information about the
	/// stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetIndexResponse Get<TDocument>(Elastic.Clients.Elasticsearch.Indices indices)
	{
		var descriptor = new GetIndexRequestDescriptor<TDocument>(indices);
		descriptor.BeforeRequest();
		return DoRequest<GetIndexRequestDescriptor<TDocument>, GetIndexResponse, GetIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get index information.
	/// Returns information about one or more indices. For data streams, the API returns information about the
	/// stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetIndexResponse Get<TDocument>(Elastic.Clients.Elasticsearch.Indices indices, Action<GetIndexRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new GetIndexRequestDescriptor<TDocument>(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<GetIndexRequestDescriptor<TDocument>, GetIndexResponse, GetIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get index information.
	/// Returns information about one or more indices. For data streams, the API returns information about the
	/// stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetIndexResponse Get<TDocument>()
	{
		var descriptor = new GetIndexRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequest<GetIndexRequestDescriptor<TDocument>, GetIndexResponse, GetIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get index information.
	/// Returns information about one or more indices. For data streams, the API returns information about the
	/// stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetIndexResponse Get<TDocument>(Action<GetIndexRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new GetIndexRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<GetIndexRequestDescriptor<TDocument>, GetIndexResponse, GetIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get index information.
	/// Returns information about one or more indices. For data streams, the API returns information about the
	/// stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetIndexResponse Get(GetIndexRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<GetIndexRequestDescriptor, GetIndexResponse, GetIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get index information.
	/// Returns information about one or more indices. For data streams, the API returns information about the
	/// stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetIndexResponse Get(Elastic.Clients.Elasticsearch.Indices indices)
	{
		var descriptor = new GetIndexRequestDescriptor(indices);
		descriptor.BeforeRequest();
		return DoRequest<GetIndexRequestDescriptor, GetIndexResponse, GetIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get index information.
	/// Returns information about one or more indices. For data streams, the API returns information about the
	/// stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetIndexResponse Get(Elastic.Clients.Elasticsearch.Indices indices, Action<GetIndexRequestDescriptor> configureRequest)
	{
		var descriptor = new GetIndexRequestDescriptor(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<GetIndexRequestDescriptor, GetIndexResponse, GetIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get index information.
	/// Returns information about one or more indices. For data streams, the API returns information about the
	/// stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetIndexResponse> GetAsync<TDocument>(GetIndexRequestDescriptor<TDocument> descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<GetIndexRequestDescriptor<TDocument>, GetIndexResponse, GetIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get index information.
	/// Returns information about one or more indices. For data streams, the API returns information about the
	/// stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetIndexResponse> GetAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices indices, CancellationToken cancellationToken = default)
	{
		var descriptor = new GetIndexRequestDescriptor<TDocument>(indices);
		descriptor.BeforeRequest();
		return DoRequestAsync<GetIndexRequestDescriptor<TDocument>, GetIndexResponse, GetIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get index information.
	/// Returns information about one or more indices. For data streams, the API returns information about the
	/// stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetIndexResponse> GetAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices indices, Action<GetIndexRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new GetIndexRequestDescriptor<TDocument>(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<GetIndexRequestDescriptor<TDocument>, GetIndexResponse, GetIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get index information.
	/// Returns information about one or more indices. For data streams, the API returns information about the
	/// stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetIndexResponse> GetAsync<TDocument>(CancellationToken cancellationToken = default)
	{
		var descriptor = new GetIndexRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequestAsync<GetIndexRequestDescriptor<TDocument>, GetIndexResponse, GetIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get index information.
	/// Returns information about one or more indices. For data streams, the API returns information about the
	/// stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetIndexResponse> GetAsync<TDocument>(Action<GetIndexRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new GetIndexRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<GetIndexRequestDescriptor<TDocument>, GetIndexResponse, GetIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get index information.
	/// Returns information about one or more indices. For data streams, the API returns information about the
	/// stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetIndexResponse> GetAsync(GetIndexRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<GetIndexRequestDescriptor, GetIndexResponse, GetIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get index information.
	/// Returns information about one or more indices. For data streams, the API returns information about the
	/// stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetIndexResponse> GetAsync(Elastic.Clients.Elasticsearch.Indices indices, CancellationToken cancellationToken = default)
	{
		var descriptor = new GetIndexRequestDescriptor(indices);
		descriptor.BeforeRequest();
		return DoRequestAsync<GetIndexRequestDescriptor, GetIndexResponse, GetIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get index information.
	/// Returns information about one or more indices. For data streams, the API returns information about the
	/// stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetIndexResponse> GetAsync(Elastic.Clients.Elasticsearch.Indices indices, Action<GetIndexRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new GetIndexRequestDescriptor(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<GetIndexRequestDescriptor, GetIndexResponse, GetIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get aliases.
	/// Retrieves information for one or more data stream or index aliases.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetAliasResponse GetAlias(GetAliasRequest request)
	{
		request.BeforeRequest();
		return DoRequest<GetAliasRequest, GetAliasResponse, GetAliasRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Get aliases.
	/// Retrieves information for one or more data stream or index aliases.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetAliasResponse> GetAliasAsync(GetAliasRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<GetAliasRequest, GetAliasResponse, GetAliasRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get aliases.
	/// Retrieves information for one or more data stream or index aliases.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetAliasResponse GetAlias<TDocument>(GetAliasRequestDescriptor<TDocument> descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<GetAliasRequestDescriptor<TDocument>, GetAliasResponse, GetAliasRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get aliases.
	/// Retrieves information for one or more data stream or index aliases.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetAliasResponse GetAlias<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices, Elastic.Clients.Elasticsearch.Names? name)
	{
		var descriptor = new GetAliasRequestDescriptor<TDocument>(indices, name);
		descriptor.BeforeRequest();
		return DoRequest<GetAliasRequestDescriptor<TDocument>, GetAliasResponse, GetAliasRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get aliases.
	/// Retrieves information for one or more data stream or index aliases.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetAliasResponse GetAlias<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices, Elastic.Clients.Elasticsearch.Names? name, Action<GetAliasRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new GetAliasRequestDescriptor<TDocument>(indices, name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<GetAliasRequestDescriptor<TDocument>, GetAliasResponse, GetAliasRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get aliases.
	/// Retrieves information for one or more data stream or index aliases.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetAliasResponse GetAlias<TDocument>()
	{
		var descriptor = new GetAliasRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequest<GetAliasRequestDescriptor<TDocument>, GetAliasResponse, GetAliasRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get aliases.
	/// Retrieves information for one or more data stream or index aliases.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetAliasResponse GetAlias<TDocument>(Action<GetAliasRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new GetAliasRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<GetAliasRequestDescriptor<TDocument>, GetAliasResponse, GetAliasRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get aliases.
	/// Retrieves information for one or more data stream or index aliases.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetAliasResponse GetAlias(GetAliasRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<GetAliasRequestDescriptor, GetAliasResponse, GetAliasRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get aliases.
	/// Retrieves information for one or more data stream or index aliases.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetAliasResponse GetAlias(Elastic.Clients.Elasticsearch.Indices? indices, Elastic.Clients.Elasticsearch.Names? name)
	{
		var descriptor = new GetAliasRequestDescriptor(indices, name);
		descriptor.BeforeRequest();
		return DoRequest<GetAliasRequestDescriptor, GetAliasResponse, GetAliasRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get aliases.
	/// Retrieves information for one or more data stream or index aliases.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetAliasResponse GetAlias(Elastic.Clients.Elasticsearch.Indices? indices, Elastic.Clients.Elasticsearch.Names? name, Action<GetAliasRequestDescriptor> configureRequest)
	{
		var descriptor = new GetAliasRequestDescriptor(indices, name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<GetAliasRequestDescriptor, GetAliasResponse, GetAliasRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get aliases.
	/// Retrieves information for one or more data stream or index aliases.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetAliasResponse GetAlias()
	{
		var descriptor = new GetAliasRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequest<GetAliasRequestDescriptor, GetAliasResponse, GetAliasRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get aliases.
	/// Retrieves information for one or more data stream or index aliases.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetAliasResponse GetAlias(Action<GetAliasRequestDescriptor> configureRequest)
	{
		var descriptor = new GetAliasRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<GetAliasRequestDescriptor, GetAliasResponse, GetAliasRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get aliases.
	/// Retrieves information for one or more data stream or index aliases.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetAliasResponse> GetAliasAsync<TDocument>(GetAliasRequestDescriptor<TDocument> descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<GetAliasRequestDescriptor<TDocument>, GetAliasResponse, GetAliasRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get aliases.
	/// Retrieves information for one or more data stream or index aliases.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetAliasResponse> GetAliasAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices, Elastic.Clients.Elasticsearch.Names? name, CancellationToken cancellationToken = default)
	{
		var descriptor = new GetAliasRequestDescriptor<TDocument>(indices, name);
		descriptor.BeforeRequest();
		return DoRequestAsync<GetAliasRequestDescriptor<TDocument>, GetAliasResponse, GetAliasRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get aliases.
	/// Retrieves information for one or more data stream or index aliases.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetAliasResponse> GetAliasAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices, Elastic.Clients.Elasticsearch.Names? name, Action<GetAliasRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new GetAliasRequestDescriptor<TDocument>(indices, name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<GetAliasRequestDescriptor<TDocument>, GetAliasResponse, GetAliasRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get aliases.
	/// Retrieves information for one or more data stream or index aliases.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetAliasResponse> GetAliasAsync<TDocument>(CancellationToken cancellationToken = default)
	{
		var descriptor = new GetAliasRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequestAsync<GetAliasRequestDescriptor<TDocument>, GetAliasResponse, GetAliasRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get aliases.
	/// Retrieves information for one or more data stream or index aliases.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetAliasResponse> GetAliasAsync<TDocument>(Action<GetAliasRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new GetAliasRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<GetAliasRequestDescriptor<TDocument>, GetAliasResponse, GetAliasRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get aliases.
	/// Retrieves information for one or more data stream or index aliases.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetAliasResponse> GetAliasAsync(GetAliasRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<GetAliasRequestDescriptor, GetAliasResponse, GetAliasRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get aliases.
	/// Retrieves information for one or more data stream or index aliases.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetAliasResponse> GetAliasAsync(Elastic.Clients.Elasticsearch.Indices? indices, Elastic.Clients.Elasticsearch.Names? name, CancellationToken cancellationToken = default)
	{
		var descriptor = new GetAliasRequestDescriptor(indices, name);
		descriptor.BeforeRequest();
		return DoRequestAsync<GetAliasRequestDescriptor, GetAliasResponse, GetAliasRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get aliases.
	/// Retrieves information for one or more data stream or index aliases.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetAliasResponse> GetAliasAsync(Elastic.Clients.Elasticsearch.Indices? indices, Elastic.Clients.Elasticsearch.Names? name, Action<GetAliasRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new GetAliasRequestDescriptor(indices, name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<GetAliasRequestDescriptor, GetAliasResponse, GetAliasRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get aliases.
	/// Retrieves information for one or more data stream or index aliases.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetAliasResponse> GetAliasAsync(CancellationToken cancellationToken = default)
	{
		var descriptor = new GetAliasRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequestAsync<GetAliasRequestDescriptor, GetAliasResponse, GetAliasRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get aliases.
	/// Retrieves information for one or more data stream or index aliases.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetAliasResponse> GetAliasAsync(Action<GetAliasRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new GetAliasRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<GetAliasRequestDescriptor, GetAliasResponse, GetAliasRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get data stream lifecycles.
	/// Retrieves the data stream lifecycle configuration of one or more data streams.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams-get-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetDataLifecycleResponse GetDataLifecycle(GetDataLifecycleRequest request)
	{
		request.BeforeRequest();
		return DoRequest<GetDataLifecycleRequest, GetDataLifecycleResponse, GetDataLifecycleRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Get data stream lifecycles.
	/// Retrieves the data stream lifecycle configuration of one or more data streams.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams-get-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetDataLifecycleResponse> GetDataLifecycleAsync(GetDataLifecycleRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<GetDataLifecycleRequest, GetDataLifecycleResponse, GetDataLifecycleRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get data stream lifecycles.
	/// Retrieves the data stream lifecycle configuration of one or more data streams.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams-get-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetDataLifecycleResponse GetDataLifecycle(GetDataLifecycleRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<GetDataLifecycleRequestDescriptor, GetDataLifecycleResponse, GetDataLifecycleRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get data stream lifecycles.
	/// Retrieves the data stream lifecycle configuration of one or more data streams.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams-get-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetDataLifecycleResponse GetDataLifecycle(Elastic.Clients.Elasticsearch.DataStreamNames name)
	{
		var descriptor = new GetDataLifecycleRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequest<GetDataLifecycleRequestDescriptor, GetDataLifecycleResponse, GetDataLifecycleRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get data stream lifecycles.
	/// Retrieves the data stream lifecycle configuration of one or more data streams.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams-get-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetDataLifecycleResponse GetDataLifecycle(Elastic.Clients.Elasticsearch.DataStreamNames name, Action<GetDataLifecycleRequestDescriptor> configureRequest)
	{
		var descriptor = new GetDataLifecycleRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<GetDataLifecycleRequestDescriptor, GetDataLifecycleResponse, GetDataLifecycleRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get data stream lifecycles.
	/// Retrieves the data stream lifecycle configuration of one or more data streams.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams-get-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetDataLifecycleResponse> GetDataLifecycleAsync(GetDataLifecycleRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<GetDataLifecycleRequestDescriptor, GetDataLifecycleResponse, GetDataLifecycleRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get data stream lifecycles.
	/// Retrieves the data stream lifecycle configuration of one or more data streams.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams-get-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetDataLifecycleResponse> GetDataLifecycleAsync(Elastic.Clients.Elasticsearch.DataStreamNames name, CancellationToken cancellationToken = default)
	{
		var descriptor = new GetDataLifecycleRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequestAsync<GetDataLifecycleRequestDescriptor, GetDataLifecycleResponse, GetDataLifecycleRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get data stream lifecycles.
	/// Retrieves the data stream lifecycle configuration of one or more data streams.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams-get-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetDataLifecycleResponse> GetDataLifecycleAsync(Elastic.Clients.Elasticsearch.DataStreamNames name, Action<GetDataLifecycleRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new GetDataLifecycleRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<GetDataLifecycleRequestDescriptor, GetDataLifecycleResponse, GetDataLifecycleRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get data streams.
	/// Retrieves information about one or more data streams.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetDataStreamResponse GetDataStream(GetDataStreamRequest request)
	{
		request.BeforeRequest();
		return DoRequest<GetDataStreamRequest, GetDataStreamResponse, GetDataStreamRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Get data streams.
	/// Retrieves information about one or more data streams.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetDataStreamResponse> GetDataStreamAsync(GetDataStreamRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<GetDataStreamRequest, GetDataStreamResponse, GetDataStreamRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get data streams.
	/// Retrieves information about one or more data streams.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetDataStreamResponse GetDataStream(GetDataStreamRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<GetDataStreamRequestDescriptor, GetDataStreamResponse, GetDataStreamRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get data streams.
	/// Retrieves information about one or more data streams.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetDataStreamResponse GetDataStream(Elastic.Clients.Elasticsearch.DataStreamNames? name)
	{
		var descriptor = new GetDataStreamRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequest<GetDataStreamRequestDescriptor, GetDataStreamResponse, GetDataStreamRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get data streams.
	/// Retrieves information about one or more data streams.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetDataStreamResponse GetDataStream(Elastic.Clients.Elasticsearch.DataStreamNames? name, Action<GetDataStreamRequestDescriptor> configureRequest)
	{
		var descriptor = new GetDataStreamRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<GetDataStreamRequestDescriptor, GetDataStreamResponse, GetDataStreamRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get data streams.
	/// Retrieves information about one or more data streams.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetDataStreamResponse GetDataStream()
	{
		var descriptor = new GetDataStreamRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequest<GetDataStreamRequestDescriptor, GetDataStreamResponse, GetDataStreamRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get data streams.
	/// Retrieves information about one or more data streams.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetDataStreamResponse GetDataStream(Action<GetDataStreamRequestDescriptor> configureRequest)
	{
		var descriptor = new GetDataStreamRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<GetDataStreamRequestDescriptor, GetDataStreamResponse, GetDataStreamRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get data streams.
	/// Retrieves information about one or more data streams.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetDataStreamResponse> GetDataStreamAsync(GetDataStreamRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<GetDataStreamRequestDescriptor, GetDataStreamResponse, GetDataStreamRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get data streams.
	/// Retrieves information about one or more data streams.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetDataStreamResponse> GetDataStreamAsync(Elastic.Clients.Elasticsearch.DataStreamNames? name, CancellationToken cancellationToken = default)
	{
		var descriptor = new GetDataStreamRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequestAsync<GetDataStreamRequestDescriptor, GetDataStreamResponse, GetDataStreamRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get data streams.
	/// Retrieves information about one or more data streams.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetDataStreamResponse> GetDataStreamAsync(Elastic.Clients.Elasticsearch.DataStreamNames? name, Action<GetDataStreamRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new GetDataStreamRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<GetDataStreamRequestDescriptor, GetDataStreamResponse, GetDataStreamRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get data streams.
	/// Retrieves information about one or more data streams.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetDataStreamResponse> GetDataStreamAsync(CancellationToken cancellationToken = default)
	{
		var descriptor = new GetDataStreamRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequestAsync<GetDataStreamRequestDescriptor, GetDataStreamResponse, GetDataStreamRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get data streams.
	/// Retrieves information about one or more data streams.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetDataStreamResponse> GetDataStreamAsync(Action<GetDataStreamRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new GetDataStreamRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<GetDataStreamRequestDescriptor, GetDataStreamResponse, GetDataStreamRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get mapping definitions.
	/// Retrieves mapping definitions for one or more fields.
	/// For data streams, the API retrieves field mappings for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-field-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetFieldMappingResponse GetFieldMapping(GetFieldMappingRequest request)
	{
		request.BeforeRequest();
		return DoRequest<GetFieldMappingRequest, GetFieldMappingResponse, GetFieldMappingRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Get mapping definitions.
	/// Retrieves mapping definitions for one or more fields.
	/// For data streams, the API retrieves field mappings for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-field-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetFieldMappingResponse> GetFieldMappingAsync(GetFieldMappingRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<GetFieldMappingRequest, GetFieldMappingResponse, GetFieldMappingRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get mapping definitions.
	/// Retrieves mapping definitions for one or more fields.
	/// For data streams, the API retrieves field mappings for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-field-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetFieldMappingResponse GetFieldMapping<TDocument>(GetFieldMappingRequestDescriptor<TDocument> descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<GetFieldMappingRequestDescriptor<TDocument>, GetFieldMappingResponse, GetFieldMappingRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get mapping definitions.
	/// Retrieves mapping definitions for one or more fields.
	/// For data streams, the API retrieves field mappings for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-field-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetFieldMappingResponse GetFieldMapping<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices, Elastic.Clients.Elasticsearch.Fields fields)
	{
		var descriptor = new GetFieldMappingRequestDescriptor<TDocument>(indices, fields);
		descriptor.BeforeRequest();
		return DoRequest<GetFieldMappingRequestDescriptor<TDocument>, GetFieldMappingResponse, GetFieldMappingRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get mapping definitions.
	/// Retrieves mapping definitions for one or more fields.
	/// For data streams, the API retrieves field mappings for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-field-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetFieldMappingResponse GetFieldMapping<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices, Elastic.Clients.Elasticsearch.Fields fields, Action<GetFieldMappingRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new GetFieldMappingRequestDescriptor<TDocument>(indices, fields);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<GetFieldMappingRequestDescriptor<TDocument>, GetFieldMappingResponse, GetFieldMappingRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get mapping definitions.
	/// Retrieves mapping definitions for one or more fields.
	/// For data streams, the API retrieves field mappings for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-field-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetFieldMappingResponse GetFieldMapping<TDocument>(Elastic.Clients.Elasticsearch.Fields fields)
	{
		var descriptor = new GetFieldMappingRequestDescriptor<TDocument>(fields);
		descriptor.BeforeRequest();
		return DoRequest<GetFieldMappingRequestDescriptor<TDocument>, GetFieldMappingResponse, GetFieldMappingRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get mapping definitions.
	/// Retrieves mapping definitions for one or more fields.
	/// For data streams, the API retrieves field mappings for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-field-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetFieldMappingResponse GetFieldMapping<TDocument>(Elastic.Clients.Elasticsearch.Fields fields, Action<GetFieldMappingRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new GetFieldMappingRequestDescriptor<TDocument>(fields);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<GetFieldMappingRequestDescriptor<TDocument>, GetFieldMappingResponse, GetFieldMappingRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get mapping definitions.
	/// Retrieves mapping definitions for one or more fields.
	/// For data streams, the API retrieves field mappings for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-field-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetFieldMappingResponse GetFieldMapping(GetFieldMappingRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<GetFieldMappingRequestDescriptor, GetFieldMappingResponse, GetFieldMappingRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get mapping definitions.
	/// Retrieves mapping definitions for one or more fields.
	/// For data streams, the API retrieves field mappings for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-field-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetFieldMappingResponse GetFieldMapping(Elastic.Clients.Elasticsearch.Indices? indices, Elastic.Clients.Elasticsearch.Fields fields)
	{
		var descriptor = new GetFieldMappingRequestDescriptor(indices, fields);
		descriptor.BeforeRequest();
		return DoRequest<GetFieldMappingRequestDescriptor, GetFieldMappingResponse, GetFieldMappingRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get mapping definitions.
	/// Retrieves mapping definitions for one or more fields.
	/// For data streams, the API retrieves field mappings for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-field-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetFieldMappingResponse GetFieldMapping(Elastic.Clients.Elasticsearch.Indices? indices, Elastic.Clients.Elasticsearch.Fields fields, Action<GetFieldMappingRequestDescriptor> configureRequest)
	{
		var descriptor = new GetFieldMappingRequestDescriptor(indices, fields);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<GetFieldMappingRequestDescriptor, GetFieldMappingResponse, GetFieldMappingRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get mapping definitions.
	/// Retrieves mapping definitions for one or more fields.
	/// For data streams, the API retrieves field mappings for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-field-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetFieldMappingResponse GetFieldMapping(Elastic.Clients.Elasticsearch.Fields fields)
	{
		var descriptor = new GetFieldMappingRequestDescriptor(fields);
		descriptor.BeforeRequest();
		return DoRequest<GetFieldMappingRequestDescriptor, GetFieldMappingResponse, GetFieldMappingRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get mapping definitions.
	/// Retrieves mapping definitions for one or more fields.
	/// For data streams, the API retrieves field mappings for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-field-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetFieldMappingResponse GetFieldMapping(Elastic.Clients.Elasticsearch.Fields fields, Action<GetFieldMappingRequestDescriptor> configureRequest)
	{
		var descriptor = new GetFieldMappingRequestDescriptor(fields);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<GetFieldMappingRequestDescriptor, GetFieldMappingResponse, GetFieldMappingRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get mapping definitions.
	/// Retrieves mapping definitions for one or more fields.
	/// For data streams, the API retrieves field mappings for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-field-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetFieldMappingResponse> GetFieldMappingAsync<TDocument>(GetFieldMappingRequestDescriptor<TDocument> descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<GetFieldMappingRequestDescriptor<TDocument>, GetFieldMappingResponse, GetFieldMappingRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get mapping definitions.
	/// Retrieves mapping definitions for one or more fields.
	/// For data streams, the API retrieves field mappings for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-field-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetFieldMappingResponse> GetFieldMappingAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices, Elastic.Clients.Elasticsearch.Fields fields, CancellationToken cancellationToken = default)
	{
		var descriptor = new GetFieldMappingRequestDescriptor<TDocument>(indices, fields);
		descriptor.BeforeRequest();
		return DoRequestAsync<GetFieldMappingRequestDescriptor<TDocument>, GetFieldMappingResponse, GetFieldMappingRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get mapping definitions.
	/// Retrieves mapping definitions for one or more fields.
	/// For data streams, the API retrieves field mappings for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-field-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetFieldMappingResponse> GetFieldMappingAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices, Elastic.Clients.Elasticsearch.Fields fields, Action<GetFieldMappingRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new GetFieldMappingRequestDescriptor<TDocument>(indices, fields);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<GetFieldMappingRequestDescriptor<TDocument>, GetFieldMappingResponse, GetFieldMappingRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get mapping definitions.
	/// Retrieves mapping definitions for one or more fields.
	/// For data streams, the API retrieves field mappings for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-field-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetFieldMappingResponse> GetFieldMappingAsync<TDocument>(Elastic.Clients.Elasticsearch.Fields fields, CancellationToken cancellationToken = default)
	{
		var descriptor = new GetFieldMappingRequestDescriptor<TDocument>(fields);
		descriptor.BeforeRequest();
		return DoRequestAsync<GetFieldMappingRequestDescriptor<TDocument>, GetFieldMappingResponse, GetFieldMappingRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get mapping definitions.
	/// Retrieves mapping definitions for one or more fields.
	/// For data streams, the API retrieves field mappings for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-field-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetFieldMappingResponse> GetFieldMappingAsync<TDocument>(Elastic.Clients.Elasticsearch.Fields fields, Action<GetFieldMappingRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new GetFieldMappingRequestDescriptor<TDocument>(fields);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<GetFieldMappingRequestDescriptor<TDocument>, GetFieldMappingResponse, GetFieldMappingRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get mapping definitions.
	/// Retrieves mapping definitions for one or more fields.
	/// For data streams, the API retrieves field mappings for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-field-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetFieldMappingResponse> GetFieldMappingAsync(GetFieldMappingRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<GetFieldMappingRequestDescriptor, GetFieldMappingResponse, GetFieldMappingRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get mapping definitions.
	/// Retrieves mapping definitions for one or more fields.
	/// For data streams, the API retrieves field mappings for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-field-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetFieldMappingResponse> GetFieldMappingAsync(Elastic.Clients.Elasticsearch.Indices? indices, Elastic.Clients.Elasticsearch.Fields fields, CancellationToken cancellationToken = default)
	{
		var descriptor = new GetFieldMappingRequestDescriptor(indices, fields);
		descriptor.BeforeRequest();
		return DoRequestAsync<GetFieldMappingRequestDescriptor, GetFieldMappingResponse, GetFieldMappingRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get mapping definitions.
	/// Retrieves mapping definitions for one or more fields.
	/// For data streams, the API retrieves field mappings for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-field-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetFieldMappingResponse> GetFieldMappingAsync(Elastic.Clients.Elasticsearch.Indices? indices, Elastic.Clients.Elasticsearch.Fields fields, Action<GetFieldMappingRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new GetFieldMappingRequestDescriptor(indices, fields);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<GetFieldMappingRequestDescriptor, GetFieldMappingResponse, GetFieldMappingRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get mapping definitions.
	/// Retrieves mapping definitions for one or more fields.
	/// For data streams, the API retrieves field mappings for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-field-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetFieldMappingResponse> GetFieldMappingAsync(Elastic.Clients.Elasticsearch.Fields fields, CancellationToken cancellationToken = default)
	{
		var descriptor = new GetFieldMappingRequestDescriptor(fields);
		descriptor.BeforeRequest();
		return DoRequestAsync<GetFieldMappingRequestDescriptor, GetFieldMappingResponse, GetFieldMappingRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get mapping definitions.
	/// Retrieves mapping definitions for one or more fields.
	/// For data streams, the API retrieves field mappings for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-field-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetFieldMappingResponse> GetFieldMappingAsync(Elastic.Clients.Elasticsearch.Fields fields, Action<GetFieldMappingRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new GetFieldMappingRequestDescriptor(fields);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<GetFieldMappingRequestDescriptor, GetFieldMappingResponse, GetFieldMappingRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get index templates.
	/// Returns information about one or more index templates.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetIndexTemplateResponse GetIndexTemplate(GetIndexTemplateRequest request)
	{
		request.BeforeRequest();
		return DoRequest<GetIndexTemplateRequest, GetIndexTemplateResponse, GetIndexTemplateRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Get index templates.
	/// Returns information about one or more index templates.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetIndexTemplateResponse> GetIndexTemplateAsync(GetIndexTemplateRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<GetIndexTemplateRequest, GetIndexTemplateResponse, GetIndexTemplateRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get index templates.
	/// Returns information about one or more index templates.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetIndexTemplateResponse GetIndexTemplate(GetIndexTemplateRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<GetIndexTemplateRequestDescriptor, GetIndexTemplateResponse, GetIndexTemplateRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get index templates.
	/// Returns information about one or more index templates.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetIndexTemplateResponse GetIndexTemplate(Elastic.Clients.Elasticsearch.Name? name)
	{
		var descriptor = new GetIndexTemplateRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequest<GetIndexTemplateRequestDescriptor, GetIndexTemplateResponse, GetIndexTemplateRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get index templates.
	/// Returns information about one or more index templates.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetIndexTemplateResponse GetIndexTemplate(Elastic.Clients.Elasticsearch.Name? name, Action<GetIndexTemplateRequestDescriptor> configureRequest)
	{
		var descriptor = new GetIndexTemplateRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<GetIndexTemplateRequestDescriptor, GetIndexTemplateResponse, GetIndexTemplateRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get index templates.
	/// Returns information about one or more index templates.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetIndexTemplateResponse GetIndexTemplate()
	{
		var descriptor = new GetIndexTemplateRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequest<GetIndexTemplateRequestDescriptor, GetIndexTemplateResponse, GetIndexTemplateRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get index templates.
	/// Returns information about one or more index templates.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetIndexTemplateResponse GetIndexTemplate(Action<GetIndexTemplateRequestDescriptor> configureRequest)
	{
		var descriptor = new GetIndexTemplateRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<GetIndexTemplateRequestDescriptor, GetIndexTemplateResponse, GetIndexTemplateRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get index templates.
	/// Returns information about one or more index templates.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetIndexTemplateResponse> GetIndexTemplateAsync(GetIndexTemplateRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<GetIndexTemplateRequestDescriptor, GetIndexTemplateResponse, GetIndexTemplateRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get index templates.
	/// Returns information about one or more index templates.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetIndexTemplateResponse> GetIndexTemplateAsync(Elastic.Clients.Elasticsearch.Name? name, CancellationToken cancellationToken = default)
	{
		var descriptor = new GetIndexTemplateRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequestAsync<GetIndexTemplateRequestDescriptor, GetIndexTemplateResponse, GetIndexTemplateRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get index templates.
	/// Returns information about one or more index templates.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetIndexTemplateResponse> GetIndexTemplateAsync(Elastic.Clients.Elasticsearch.Name? name, Action<GetIndexTemplateRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new GetIndexTemplateRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<GetIndexTemplateRequestDescriptor, GetIndexTemplateResponse, GetIndexTemplateRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get index templates.
	/// Returns information about one or more index templates.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetIndexTemplateResponse> GetIndexTemplateAsync(CancellationToken cancellationToken = default)
	{
		var descriptor = new GetIndexTemplateRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequestAsync<GetIndexTemplateRequestDescriptor, GetIndexTemplateResponse, GetIndexTemplateRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get index templates.
	/// Returns information about one or more index templates.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetIndexTemplateResponse> GetIndexTemplateAsync(Action<GetIndexTemplateRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new GetIndexTemplateRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<GetIndexTemplateRequestDescriptor, GetIndexTemplateResponse, GetIndexTemplateRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get mapping definitions.
	/// Retrieves mapping definitions for one or more indices.
	/// For data streams, the API retrieves mappings for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetMappingResponse GetMapping(GetMappingRequest request)
	{
		request.BeforeRequest();
		return DoRequest<GetMappingRequest, GetMappingResponse, GetMappingRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Get mapping definitions.
	/// Retrieves mapping definitions for one or more indices.
	/// For data streams, the API retrieves mappings for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetMappingResponse> GetMappingAsync(GetMappingRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<GetMappingRequest, GetMappingResponse, GetMappingRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get mapping definitions.
	/// Retrieves mapping definitions for one or more indices.
	/// For data streams, the API retrieves mappings for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetMappingResponse GetMapping<TDocument>(GetMappingRequestDescriptor<TDocument> descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<GetMappingRequestDescriptor<TDocument>, GetMappingResponse, GetMappingRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get mapping definitions.
	/// Retrieves mapping definitions for one or more indices.
	/// For data streams, the API retrieves mappings for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetMappingResponse GetMapping<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices)
	{
		var descriptor = new GetMappingRequestDescriptor<TDocument>(indices);
		descriptor.BeforeRequest();
		return DoRequest<GetMappingRequestDescriptor<TDocument>, GetMappingResponse, GetMappingRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get mapping definitions.
	/// Retrieves mapping definitions for one or more indices.
	/// For data streams, the API retrieves mappings for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetMappingResponse GetMapping<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices, Action<GetMappingRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new GetMappingRequestDescriptor<TDocument>(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<GetMappingRequestDescriptor<TDocument>, GetMappingResponse, GetMappingRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get mapping definitions.
	/// Retrieves mapping definitions for one or more indices.
	/// For data streams, the API retrieves mappings for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetMappingResponse GetMapping<TDocument>()
	{
		var descriptor = new GetMappingRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequest<GetMappingRequestDescriptor<TDocument>, GetMappingResponse, GetMappingRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get mapping definitions.
	/// Retrieves mapping definitions for one or more indices.
	/// For data streams, the API retrieves mappings for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetMappingResponse GetMapping<TDocument>(Action<GetMappingRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new GetMappingRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<GetMappingRequestDescriptor<TDocument>, GetMappingResponse, GetMappingRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get mapping definitions.
	/// Retrieves mapping definitions for one or more indices.
	/// For data streams, the API retrieves mappings for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetMappingResponse GetMapping(GetMappingRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<GetMappingRequestDescriptor, GetMappingResponse, GetMappingRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get mapping definitions.
	/// Retrieves mapping definitions for one or more indices.
	/// For data streams, the API retrieves mappings for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetMappingResponse GetMapping(Elastic.Clients.Elasticsearch.Indices? indices)
	{
		var descriptor = new GetMappingRequestDescriptor(indices);
		descriptor.BeforeRequest();
		return DoRequest<GetMappingRequestDescriptor, GetMappingResponse, GetMappingRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get mapping definitions.
	/// Retrieves mapping definitions for one or more indices.
	/// For data streams, the API retrieves mappings for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetMappingResponse GetMapping(Elastic.Clients.Elasticsearch.Indices? indices, Action<GetMappingRequestDescriptor> configureRequest)
	{
		var descriptor = new GetMappingRequestDescriptor(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<GetMappingRequestDescriptor, GetMappingResponse, GetMappingRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get mapping definitions.
	/// Retrieves mapping definitions for one or more indices.
	/// For data streams, the API retrieves mappings for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetMappingResponse GetMapping()
	{
		var descriptor = new GetMappingRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequest<GetMappingRequestDescriptor, GetMappingResponse, GetMappingRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get mapping definitions.
	/// Retrieves mapping definitions for one or more indices.
	/// For data streams, the API retrieves mappings for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetMappingResponse GetMapping(Action<GetMappingRequestDescriptor> configureRequest)
	{
		var descriptor = new GetMappingRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<GetMappingRequestDescriptor, GetMappingResponse, GetMappingRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get mapping definitions.
	/// Retrieves mapping definitions for one or more indices.
	/// For data streams, the API retrieves mappings for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetMappingResponse> GetMappingAsync<TDocument>(GetMappingRequestDescriptor<TDocument> descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<GetMappingRequestDescriptor<TDocument>, GetMappingResponse, GetMappingRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get mapping definitions.
	/// Retrieves mapping definitions for one or more indices.
	/// For data streams, the API retrieves mappings for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetMappingResponse> GetMappingAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices, CancellationToken cancellationToken = default)
	{
		var descriptor = new GetMappingRequestDescriptor<TDocument>(indices);
		descriptor.BeforeRequest();
		return DoRequestAsync<GetMappingRequestDescriptor<TDocument>, GetMappingResponse, GetMappingRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get mapping definitions.
	/// Retrieves mapping definitions for one or more indices.
	/// For data streams, the API retrieves mappings for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetMappingResponse> GetMappingAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices, Action<GetMappingRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new GetMappingRequestDescriptor<TDocument>(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<GetMappingRequestDescriptor<TDocument>, GetMappingResponse, GetMappingRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get mapping definitions.
	/// Retrieves mapping definitions for one or more indices.
	/// For data streams, the API retrieves mappings for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetMappingResponse> GetMappingAsync<TDocument>(CancellationToken cancellationToken = default)
	{
		var descriptor = new GetMappingRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequestAsync<GetMappingRequestDescriptor<TDocument>, GetMappingResponse, GetMappingRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get mapping definitions.
	/// Retrieves mapping definitions for one or more indices.
	/// For data streams, the API retrieves mappings for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetMappingResponse> GetMappingAsync<TDocument>(Action<GetMappingRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new GetMappingRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<GetMappingRequestDescriptor<TDocument>, GetMappingResponse, GetMappingRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get mapping definitions.
	/// Retrieves mapping definitions for one or more indices.
	/// For data streams, the API retrieves mappings for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetMappingResponse> GetMappingAsync(GetMappingRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<GetMappingRequestDescriptor, GetMappingResponse, GetMappingRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get mapping definitions.
	/// Retrieves mapping definitions for one or more indices.
	/// For data streams, the API retrieves mappings for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetMappingResponse> GetMappingAsync(Elastic.Clients.Elasticsearch.Indices? indices, CancellationToken cancellationToken = default)
	{
		var descriptor = new GetMappingRequestDescriptor(indices);
		descriptor.BeforeRequest();
		return DoRequestAsync<GetMappingRequestDescriptor, GetMappingResponse, GetMappingRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get mapping definitions.
	/// Retrieves mapping definitions for one or more indices.
	/// For data streams, the API retrieves mappings for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetMappingResponse> GetMappingAsync(Elastic.Clients.Elasticsearch.Indices? indices, Action<GetMappingRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new GetMappingRequestDescriptor(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<GetMappingRequestDescriptor, GetMappingResponse, GetMappingRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get mapping definitions.
	/// Retrieves mapping definitions for one or more indices.
	/// For data streams, the API retrieves mappings for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetMappingResponse> GetMappingAsync(CancellationToken cancellationToken = default)
	{
		var descriptor = new GetMappingRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequestAsync<GetMappingRequestDescriptor, GetMappingResponse, GetMappingRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get mapping definitions.
	/// Retrieves mapping definitions for one or more indices.
	/// For data streams, the API retrieves mappings for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetMappingResponse> GetMappingAsync(Action<GetMappingRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new GetMappingRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<GetMappingRequestDescriptor, GetMappingResponse, GetMappingRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get index settings.
	/// Returns setting information for one or more indices. For data streams,
	/// returns setting information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-settings.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetIndicesSettingsResponse GetSettings(GetIndicesSettingsRequest request)
	{
		request.BeforeRequest();
		return DoRequest<GetIndicesSettingsRequest, GetIndicesSettingsResponse, GetIndicesSettingsRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Get index settings.
	/// Returns setting information for one or more indices. For data streams,
	/// returns setting information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-settings.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetIndicesSettingsResponse> GetSettingsAsync(GetIndicesSettingsRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<GetIndicesSettingsRequest, GetIndicesSettingsResponse, GetIndicesSettingsRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get index settings.
	/// Returns setting information for one or more indices. For data streams,
	/// returns setting information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-settings.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetIndicesSettingsResponse GetSettings<TDocument>(GetIndicesSettingsRequestDescriptor<TDocument> descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<GetIndicesSettingsRequestDescriptor<TDocument>, GetIndicesSettingsResponse, GetIndicesSettingsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get index settings.
	/// Returns setting information for one or more indices. For data streams,
	/// returns setting information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-settings.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetIndicesSettingsResponse GetSettings<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices, Elastic.Clients.Elasticsearch.Names? name)
	{
		var descriptor = new GetIndicesSettingsRequestDescriptor<TDocument>(indices, name);
		descriptor.BeforeRequest();
		return DoRequest<GetIndicesSettingsRequestDescriptor<TDocument>, GetIndicesSettingsResponse, GetIndicesSettingsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get index settings.
	/// Returns setting information for one or more indices. For data streams,
	/// returns setting information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-settings.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetIndicesSettingsResponse GetSettings<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices, Elastic.Clients.Elasticsearch.Names? name, Action<GetIndicesSettingsRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new GetIndicesSettingsRequestDescriptor<TDocument>(indices, name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<GetIndicesSettingsRequestDescriptor<TDocument>, GetIndicesSettingsResponse, GetIndicesSettingsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get index settings.
	/// Returns setting information for one or more indices. For data streams,
	/// returns setting information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-settings.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetIndicesSettingsResponse GetSettings<TDocument>()
	{
		var descriptor = new GetIndicesSettingsRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequest<GetIndicesSettingsRequestDescriptor<TDocument>, GetIndicesSettingsResponse, GetIndicesSettingsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get index settings.
	/// Returns setting information for one or more indices. For data streams,
	/// returns setting information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-settings.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetIndicesSettingsResponse GetSettings<TDocument>(Action<GetIndicesSettingsRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new GetIndicesSettingsRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<GetIndicesSettingsRequestDescriptor<TDocument>, GetIndicesSettingsResponse, GetIndicesSettingsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get index settings.
	/// Returns setting information for one or more indices. For data streams,
	/// returns setting information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-settings.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetIndicesSettingsResponse GetSettings(GetIndicesSettingsRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<GetIndicesSettingsRequestDescriptor, GetIndicesSettingsResponse, GetIndicesSettingsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get index settings.
	/// Returns setting information for one or more indices. For data streams,
	/// returns setting information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-settings.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetIndicesSettingsResponse GetSettings(Elastic.Clients.Elasticsearch.Indices? indices, Elastic.Clients.Elasticsearch.Names? name)
	{
		var descriptor = new GetIndicesSettingsRequestDescriptor(indices, name);
		descriptor.BeforeRequest();
		return DoRequest<GetIndicesSettingsRequestDescriptor, GetIndicesSettingsResponse, GetIndicesSettingsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get index settings.
	/// Returns setting information for one or more indices. For data streams,
	/// returns setting information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-settings.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetIndicesSettingsResponse GetSettings(Elastic.Clients.Elasticsearch.Indices? indices, Elastic.Clients.Elasticsearch.Names? name, Action<GetIndicesSettingsRequestDescriptor> configureRequest)
	{
		var descriptor = new GetIndicesSettingsRequestDescriptor(indices, name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<GetIndicesSettingsRequestDescriptor, GetIndicesSettingsResponse, GetIndicesSettingsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get index settings.
	/// Returns setting information for one or more indices. For data streams,
	/// returns setting information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-settings.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetIndicesSettingsResponse GetSettings()
	{
		var descriptor = new GetIndicesSettingsRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequest<GetIndicesSettingsRequestDescriptor, GetIndicesSettingsResponse, GetIndicesSettingsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get index settings.
	/// Returns setting information for one or more indices. For data streams,
	/// returns setting information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-settings.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetIndicesSettingsResponse GetSettings(Action<GetIndicesSettingsRequestDescriptor> configureRequest)
	{
		var descriptor = new GetIndicesSettingsRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<GetIndicesSettingsRequestDescriptor, GetIndicesSettingsResponse, GetIndicesSettingsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get index settings.
	/// Returns setting information for one or more indices. For data streams,
	/// returns setting information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-settings.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetIndicesSettingsResponse> GetSettingsAsync<TDocument>(GetIndicesSettingsRequestDescriptor<TDocument> descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<GetIndicesSettingsRequestDescriptor<TDocument>, GetIndicesSettingsResponse, GetIndicesSettingsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get index settings.
	/// Returns setting information for one or more indices. For data streams,
	/// returns setting information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-settings.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetIndicesSettingsResponse> GetSettingsAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices, Elastic.Clients.Elasticsearch.Names? name, CancellationToken cancellationToken = default)
	{
		var descriptor = new GetIndicesSettingsRequestDescriptor<TDocument>(indices, name);
		descriptor.BeforeRequest();
		return DoRequestAsync<GetIndicesSettingsRequestDescriptor<TDocument>, GetIndicesSettingsResponse, GetIndicesSettingsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get index settings.
	/// Returns setting information for one or more indices. For data streams,
	/// returns setting information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-settings.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetIndicesSettingsResponse> GetSettingsAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices, Elastic.Clients.Elasticsearch.Names? name, Action<GetIndicesSettingsRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new GetIndicesSettingsRequestDescriptor<TDocument>(indices, name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<GetIndicesSettingsRequestDescriptor<TDocument>, GetIndicesSettingsResponse, GetIndicesSettingsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get index settings.
	/// Returns setting information for one or more indices. For data streams,
	/// returns setting information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-settings.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetIndicesSettingsResponse> GetSettingsAsync<TDocument>(CancellationToken cancellationToken = default)
	{
		var descriptor = new GetIndicesSettingsRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequestAsync<GetIndicesSettingsRequestDescriptor<TDocument>, GetIndicesSettingsResponse, GetIndicesSettingsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get index settings.
	/// Returns setting information for one or more indices. For data streams,
	/// returns setting information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-settings.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetIndicesSettingsResponse> GetSettingsAsync<TDocument>(Action<GetIndicesSettingsRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new GetIndicesSettingsRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<GetIndicesSettingsRequestDescriptor<TDocument>, GetIndicesSettingsResponse, GetIndicesSettingsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get index settings.
	/// Returns setting information for one or more indices. For data streams,
	/// returns setting information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-settings.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetIndicesSettingsResponse> GetSettingsAsync(GetIndicesSettingsRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<GetIndicesSettingsRequestDescriptor, GetIndicesSettingsResponse, GetIndicesSettingsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get index settings.
	/// Returns setting information for one or more indices. For data streams,
	/// returns setting information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-settings.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetIndicesSettingsResponse> GetSettingsAsync(Elastic.Clients.Elasticsearch.Indices? indices, Elastic.Clients.Elasticsearch.Names? name, CancellationToken cancellationToken = default)
	{
		var descriptor = new GetIndicesSettingsRequestDescriptor(indices, name);
		descriptor.BeforeRequest();
		return DoRequestAsync<GetIndicesSettingsRequestDescriptor, GetIndicesSettingsResponse, GetIndicesSettingsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get index settings.
	/// Returns setting information for one or more indices. For data streams,
	/// returns setting information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-settings.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetIndicesSettingsResponse> GetSettingsAsync(Elastic.Clients.Elasticsearch.Indices? indices, Elastic.Clients.Elasticsearch.Names? name, Action<GetIndicesSettingsRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new GetIndicesSettingsRequestDescriptor(indices, name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<GetIndicesSettingsRequestDescriptor, GetIndicesSettingsResponse, GetIndicesSettingsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get index settings.
	/// Returns setting information for one or more indices. For data streams,
	/// returns setting information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-settings.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetIndicesSettingsResponse> GetSettingsAsync(CancellationToken cancellationToken = default)
	{
		var descriptor = new GetIndicesSettingsRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequestAsync<GetIndicesSettingsRequestDescriptor, GetIndicesSettingsResponse, GetIndicesSettingsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get index settings.
	/// Returns setting information for one or more indices. For data streams,
	/// returns setting information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-settings.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetIndicesSettingsResponse> GetSettingsAsync(Action<GetIndicesSettingsRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new GetIndicesSettingsRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<GetIndicesSettingsRequestDescriptor, GetIndicesSettingsResponse, GetIndicesSettingsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get index templates.
	/// Retrieves information about one or more index templates.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-template-v1.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetTemplateResponse GetTemplate(GetTemplateRequest request)
	{
		request.BeforeRequest();
		return DoRequest<GetTemplateRequest, GetTemplateResponse, GetTemplateRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Get index templates.
	/// Retrieves information about one or more index templates.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-template-v1.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetTemplateResponse> GetTemplateAsync(GetTemplateRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<GetTemplateRequest, GetTemplateResponse, GetTemplateRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get index templates.
	/// Retrieves information about one or more index templates.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-template-v1.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetTemplateResponse GetTemplate(GetTemplateRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<GetTemplateRequestDescriptor, GetTemplateResponse, GetTemplateRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get index templates.
	/// Retrieves information about one or more index templates.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-template-v1.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetTemplateResponse GetTemplate(Elastic.Clients.Elasticsearch.Names? name)
	{
		var descriptor = new GetTemplateRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequest<GetTemplateRequestDescriptor, GetTemplateResponse, GetTemplateRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get index templates.
	/// Retrieves information about one or more index templates.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-template-v1.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetTemplateResponse GetTemplate(Elastic.Clients.Elasticsearch.Names? name, Action<GetTemplateRequestDescriptor> configureRequest)
	{
		var descriptor = new GetTemplateRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<GetTemplateRequestDescriptor, GetTemplateResponse, GetTemplateRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get index templates.
	/// Retrieves information about one or more index templates.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-template-v1.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetTemplateResponse GetTemplate()
	{
		var descriptor = new GetTemplateRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequest<GetTemplateRequestDescriptor, GetTemplateResponse, GetTemplateRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get index templates.
	/// Retrieves information about one or more index templates.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-template-v1.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetTemplateResponse GetTemplate(Action<GetTemplateRequestDescriptor> configureRequest)
	{
		var descriptor = new GetTemplateRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<GetTemplateRequestDescriptor, GetTemplateResponse, GetTemplateRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Get index templates.
	/// Retrieves information about one or more index templates.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-template-v1.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetTemplateResponse> GetTemplateAsync(GetTemplateRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<GetTemplateRequestDescriptor, GetTemplateResponse, GetTemplateRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get index templates.
	/// Retrieves information about one or more index templates.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-template-v1.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetTemplateResponse> GetTemplateAsync(Elastic.Clients.Elasticsearch.Names? name, CancellationToken cancellationToken = default)
	{
		var descriptor = new GetTemplateRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequestAsync<GetTemplateRequestDescriptor, GetTemplateResponse, GetTemplateRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get index templates.
	/// Retrieves information about one or more index templates.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-template-v1.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetTemplateResponse> GetTemplateAsync(Elastic.Clients.Elasticsearch.Names? name, Action<GetTemplateRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new GetTemplateRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<GetTemplateRequestDescriptor, GetTemplateResponse, GetTemplateRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get index templates.
	/// Retrieves information about one or more index templates.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-template-v1.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetTemplateResponse> GetTemplateAsync(CancellationToken cancellationToken = default)
	{
		var descriptor = new GetTemplateRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequestAsync<GetTemplateRequestDescriptor, GetTemplateResponse, GetTemplateRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Get index templates.
	/// Retrieves information about one or more index templates.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-template-v1.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetTemplateResponse> GetTemplateAsync(Action<GetTemplateRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new GetTemplateRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<GetTemplateRequestDescriptor, GetTemplateResponse, GetTemplateRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Convert an index alias to a data stream.
	/// Converts an index alias to a data stream.
	/// You must have a matching index template that is data stream enabled.
	/// The alias must meet the following criteria:
	/// The alias must have a write index;
	/// All indices for the alias must have a <c>@timestamp</c> field mapping of a <c>date</c> or <c>date_nanos</c> field type;
	/// The alias must not have any filters;
	/// The alias must not use custom routing.
	/// If successful, the request removes the alias and creates a data stream with the same name.
	/// The indices for the alias become hidden backing indices for the stream.
	/// The write index for the alias becomes the write index for the stream.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual MigrateToDataStreamResponse MigrateToDataStream(MigrateToDataStreamRequest request)
	{
		request.BeforeRequest();
		return DoRequest<MigrateToDataStreamRequest, MigrateToDataStreamResponse, MigrateToDataStreamRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Convert an index alias to a data stream.
	/// Converts an index alias to a data stream.
	/// You must have a matching index template that is data stream enabled.
	/// The alias must meet the following criteria:
	/// The alias must have a write index;
	/// All indices for the alias must have a <c>@timestamp</c> field mapping of a <c>date</c> or <c>date_nanos</c> field type;
	/// The alias must not have any filters;
	/// The alias must not use custom routing.
	/// If successful, the request removes the alias and creates a data stream with the same name.
	/// The indices for the alias become hidden backing indices for the stream.
	/// The write index for the alias becomes the write index for the stream.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<MigrateToDataStreamResponse> MigrateToDataStreamAsync(MigrateToDataStreamRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<MigrateToDataStreamRequest, MigrateToDataStreamResponse, MigrateToDataStreamRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Convert an index alias to a data stream.
	/// Converts an index alias to a data stream.
	/// You must have a matching index template that is data stream enabled.
	/// The alias must meet the following criteria:
	/// The alias must have a write index;
	/// All indices for the alias must have a <c>@timestamp</c> field mapping of a <c>date</c> or <c>date_nanos</c> field type;
	/// The alias must not have any filters;
	/// The alias must not use custom routing.
	/// If successful, the request removes the alias and creates a data stream with the same name.
	/// The indices for the alias become hidden backing indices for the stream.
	/// The write index for the alias becomes the write index for the stream.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual MigrateToDataStreamResponse MigrateToDataStream(MigrateToDataStreamRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<MigrateToDataStreamRequestDescriptor, MigrateToDataStreamResponse, MigrateToDataStreamRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Convert an index alias to a data stream.
	/// Converts an index alias to a data stream.
	/// You must have a matching index template that is data stream enabled.
	/// The alias must meet the following criteria:
	/// The alias must have a write index;
	/// All indices for the alias must have a <c>@timestamp</c> field mapping of a <c>date</c> or <c>date_nanos</c> field type;
	/// The alias must not have any filters;
	/// The alias must not use custom routing.
	/// If successful, the request removes the alias and creates a data stream with the same name.
	/// The indices for the alias become hidden backing indices for the stream.
	/// The write index for the alias becomes the write index for the stream.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual MigrateToDataStreamResponse MigrateToDataStream(Elastic.Clients.Elasticsearch.IndexName name)
	{
		var descriptor = new MigrateToDataStreamRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequest<MigrateToDataStreamRequestDescriptor, MigrateToDataStreamResponse, MigrateToDataStreamRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Convert an index alias to a data stream.
	/// Converts an index alias to a data stream.
	/// You must have a matching index template that is data stream enabled.
	/// The alias must meet the following criteria:
	/// The alias must have a write index;
	/// All indices for the alias must have a <c>@timestamp</c> field mapping of a <c>date</c> or <c>date_nanos</c> field type;
	/// The alias must not have any filters;
	/// The alias must not use custom routing.
	/// If successful, the request removes the alias and creates a data stream with the same name.
	/// The indices for the alias become hidden backing indices for the stream.
	/// The write index for the alias becomes the write index for the stream.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual MigrateToDataStreamResponse MigrateToDataStream(Elastic.Clients.Elasticsearch.IndexName name, Action<MigrateToDataStreamRequestDescriptor> configureRequest)
	{
		var descriptor = new MigrateToDataStreamRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<MigrateToDataStreamRequestDescriptor, MigrateToDataStreamResponse, MigrateToDataStreamRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Convert an index alias to a data stream.
	/// Converts an index alias to a data stream.
	/// You must have a matching index template that is data stream enabled.
	/// The alias must meet the following criteria:
	/// The alias must have a write index;
	/// All indices for the alias must have a <c>@timestamp</c> field mapping of a <c>date</c> or <c>date_nanos</c> field type;
	/// The alias must not have any filters;
	/// The alias must not use custom routing.
	/// If successful, the request removes the alias and creates a data stream with the same name.
	/// The indices for the alias become hidden backing indices for the stream.
	/// The write index for the alias becomes the write index for the stream.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<MigrateToDataStreamResponse> MigrateToDataStreamAsync(MigrateToDataStreamRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<MigrateToDataStreamRequestDescriptor, MigrateToDataStreamResponse, MigrateToDataStreamRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Convert an index alias to a data stream.
	/// Converts an index alias to a data stream.
	/// You must have a matching index template that is data stream enabled.
	/// The alias must meet the following criteria:
	/// The alias must have a write index;
	/// All indices for the alias must have a <c>@timestamp</c> field mapping of a <c>date</c> or <c>date_nanos</c> field type;
	/// The alias must not have any filters;
	/// The alias must not use custom routing.
	/// If successful, the request removes the alias and creates a data stream with the same name.
	/// The indices for the alias become hidden backing indices for the stream.
	/// The write index for the alias becomes the write index for the stream.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<MigrateToDataStreamResponse> MigrateToDataStreamAsync(Elastic.Clients.Elasticsearch.IndexName name, CancellationToken cancellationToken = default)
	{
		var descriptor = new MigrateToDataStreamRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequestAsync<MigrateToDataStreamRequestDescriptor, MigrateToDataStreamResponse, MigrateToDataStreamRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Convert an index alias to a data stream.
	/// Converts an index alias to a data stream.
	/// You must have a matching index template that is data stream enabled.
	/// The alias must meet the following criteria:
	/// The alias must have a write index;
	/// All indices for the alias must have a <c>@timestamp</c> field mapping of a <c>date</c> or <c>date_nanos</c> field type;
	/// The alias must not have any filters;
	/// The alias must not use custom routing.
	/// If successful, the request removes the alias and creates a data stream with the same name.
	/// The indices for the alias become hidden backing indices for the stream.
	/// The write index for the alias becomes the write index for the stream.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<MigrateToDataStreamResponse> MigrateToDataStreamAsync(Elastic.Clients.Elasticsearch.IndexName name, Action<MigrateToDataStreamRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new MigrateToDataStreamRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<MigrateToDataStreamRequestDescriptor, MigrateToDataStreamResponse, MigrateToDataStreamRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Update data streams.
	/// Performs one or more data stream modification actions in a single atomic operation.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ModifyDataStreamResponse ModifyDataStream(ModifyDataStreamRequest request)
	{
		request.BeforeRequest();
		return DoRequest<ModifyDataStreamRequest, ModifyDataStreamResponse, ModifyDataStreamRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Update data streams.
	/// Performs one or more data stream modification actions in a single atomic operation.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ModifyDataStreamResponse> ModifyDataStreamAsync(ModifyDataStreamRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<ModifyDataStreamRequest, ModifyDataStreamResponse, ModifyDataStreamRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Update data streams.
	/// Performs one or more data stream modification actions in a single atomic operation.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ModifyDataStreamResponse ModifyDataStream(ModifyDataStreamRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<ModifyDataStreamRequestDescriptor, ModifyDataStreamResponse, ModifyDataStreamRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Update data streams.
	/// Performs one or more data stream modification actions in a single atomic operation.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ModifyDataStreamResponse ModifyDataStream()
	{
		var descriptor = new ModifyDataStreamRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequest<ModifyDataStreamRequestDescriptor, ModifyDataStreamResponse, ModifyDataStreamRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Update data streams.
	/// Performs one or more data stream modification actions in a single atomic operation.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ModifyDataStreamResponse ModifyDataStream(Action<ModifyDataStreamRequestDescriptor> configureRequest)
	{
		var descriptor = new ModifyDataStreamRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<ModifyDataStreamRequestDescriptor, ModifyDataStreamResponse, ModifyDataStreamRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Update data streams.
	/// Performs one or more data stream modification actions in a single atomic operation.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ModifyDataStreamResponse> ModifyDataStreamAsync(ModifyDataStreamRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<ModifyDataStreamRequestDescriptor, ModifyDataStreamResponse, ModifyDataStreamRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Update data streams.
	/// Performs one or more data stream modification actions in a single atomic operation.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ModifyDataStreamResponse> ModifyDataStreamAsync(CancellationToken cancellationToken = default)
	{
		var descriptor = new ModifyDataStreamRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequestAsync<ModifyDataStreamRequestDescriptor, ModifyDataStreamResponse, ModifyDataStreamRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Update data streams.
	/// Performs one or more data stream modification actions in a single atomic operation.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ModifyDataStreamResponse> ModifyDataStreamAsync(Action<ModifyDataStreamRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new ModifyDataStreamRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<ModifyDataStreamRequestDescriptor, ModifyDataStreamResponse, ModifyDataStreamRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Opens a closed index.
	/// For data streams, the API opens any closed backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-open-close.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual OpenIndexResponse Open(OpenIndexRequest request)
	{
		request.BeforeRequest();
		return DoRequest<OpenIndexRequest, OpenIndexResponse, OpenIndexRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Opens a closed index.
	/// For data streams, the API opens any closed backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-open-close.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<OpenIndexResponse> OpenAsync(OpenIndexRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<OpenIndexRequest, OpenIndexResponse, OpenIndexRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Opens a closed index.
	/// For data streams, the API opens any closed backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-open-close.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual OpenIndexResponse Open<TDocument>(OpenIndexRequestDescriptor<TDocument> descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<OpenIndexRequestDescriptor<TDocument>, OpenIndexResponse, OpenIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Opens a closed index.
	/// For data streams, the API opens any closed backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-open-close.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual OpenIndexResponse Open<TDocument>(Elastic.Clients.Elasticsearch.Indices indices)
	{
		var descriptor = new OpenIndexRequestDescriptor<TDocument>(indices);
		descriptor.BeforeRequest();
		return DoRequest<OpenIndexRequestDescriptor<TDocument>, OpenIndexResponse, OpenIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Opens a closed index.
	/// For data streams, the API opens any closed backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-open-close.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual OpenIndexResponse Open<TDocument>(Elastic.Clients.Elasticsearch.Indices indices, Action<OpenIndexRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new OpenIndexRequestDescriptor<TDocument>(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<OpenIndexRequestDescriptor<TDocument>, OpenIndexResponse, OpenIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Opens a closed index.
	/// For data streams, the API opens any closed backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-open-close.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual OpenIndexResponse Open<TDocument>()
	{
		var descriptor = new OpenIndexRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequest<OpenIndexRequestDescriptor<TDocument>, OpenIndexResponse, OpenIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Opens a closed index.
	/// For data streams, the API opens any closed backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-open-close.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual OpenIndexResponse Open<TDocument>(Action<OpenIndexRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new OpenIndexRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<OpenIndexRequestDescriptor<TDocument>, OpenIndexResponse, OpenIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Opens a closed index.
	/// For data streams, the API opens any closed backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-open-close.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual OpenIndexResponse Open(OpenIndexRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<OpenIndexRequestDescriptor, OpenIndexResponse, OpenIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Opens a closed index.
	/// For data streams, the API opens any closed backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-open-close.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual OpenIndexResponse Open(Elastic.Clients.Elasticsearch.Indices indices)
	{
		var descriptor = new OpenIndexRequestDescriptor(indices);
		descriptor.BeforeRequest();
		return DoRequest<OpenIndexRequestDescriptor, OpenIndexResponse, OpenIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Opens a closed index.
	/// For data streams, the API opens any closed backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-open-close.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual OpenIndexResponse Open(Elastic.Clients.Elasticsearch.Indices indices, Action<OpenIndexRequestDescriptor> configureRequest)
	{
		var descriptor = new OpenIndexRequestDescriptor(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<OpenIndexRequestDescriptor, OpenIndexResponse, OpenIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Opens a closed index.
	/// For data streams, the API opens any closed backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-open-close.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<OpenIndexResponse> OpenAsync<TDocument>(OpenIndexRequestDescriptor<TDocument> descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<OpenIndexRequestDescriptor<TDocument>, OpenIndexResponse, OpenIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Opens a closed index.
	/// For data streams, the API opens any closed backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-open-close.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<OpenIndexResponse> OpenAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices indices, CancellationToken cancellationToken = default)
	{
		var descriptor = new OpenIndexRequestDescriptor<TDocument>(indices);
		descriptor.BeforeRequest();
		return DoRequestAsync<OpenIndexRequestDescriptor<TDocument>, OpenIndexResponse, OpenIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Opens a closed index.
	/// For data streams, the API opens any closed backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-open-close.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<OpenIndexResponse> OpenAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices indices, Action<OpenIndexRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new OpenIndexRequestDescriptor<TDocument>(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<OpenIndexRequestDescriptor<TDocument>, OpenIndexResponse, OpenIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Opens a closed index.
	/// For data streams, the API opens any closed backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-open-close.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<OpenIndexResponse> OpenAsync<TDocument>(CancellationToken cancellationToken = default)
	{
		var descriptor = new OpenIndexRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequestAsync<OpenIndexRequestDescriptor<TDocument>, OpenIndexResponse, OpenIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Opens a closed index.
	/// For data streams, the API opens any closed backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-open-close.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<OpenIndexResponse> OpenAsync<TDocument>(Action<OpenIndexRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new OpenIndexRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<OpenIndexRequestDescriptor<TDocument>, OpenIndexResponse, OpenIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Opens a closed index.
	/// For data streams, the API opens any closed backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-open-close.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<OpenIndexResponse> OpenAsync(OpenIndexRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<OpenIndexRequestDescriptor, OpenIndexResponse, OpenIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Opens a closed index.
	/// For data streams, the API opens any closed backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-open-close.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<OpenIndexResponse> OpenAsync(Elastic.Clients.Elasticsearch.Indices indices, CancellationToken cancellationToken = default)
	{
		var descriptor = new OpenIndexRequestDescriptor(indices);
		descriptor.BeforeRequest();
		return DoRequestAsync<OpenIndexRequestDescriptor, OpenIndexResponse, OpenIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Opens a closed index.
	/// For data streams, the API opens any closed backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-open-close.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<OpenIndexResponse> OpenAsync(Elastic.Clients.Elasticsearch.Indices indices, Action<OpenIndexRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new OpenIndexRequestDescriptor(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<OpenIndexRequestDescriptor, OpenIndexResponse, OpenIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Promotes a data stream from a replicated data stream managed by CCR to a regular data stream
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PromoteDataStreamResponse PromoteDataStream(PromoteDataStreamRequest request)
	{
		request.BeforeRequest();
		return DoRequest<PromoteDataStreamRequest, PromoteDataStreamResponse, PromoteDataStreamRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Promotes a data stream from a replicated data stream managed by CCR to a regular data stream
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PromoteDataStreamResponse> PromoteDataStreamAsync(PromoteDataStreamRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<PromoteDataStreamRequest, PromoteDataStreamResponse, PromoteDataStreamRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Promotes a data stream from a replicated data stream managed by CCR to a regular data stream
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PromoteDataStreamResponse PromoteDataStream(PromoteDataStreamRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<PromoteDataStreamRequestDescriptor, PromoteDataStreamResponse, PromoteDataStreamRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Promotes a data stream from a replicated data stream managed by CCR to a regular data stream
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PromoteDataStreamResponse PromoteDataStream(Elastic.Clients.Elasticsearch.IndexName name)
	{
		var descriptor = new PromoteDataStreamRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequest<PromoteDataStreamRequestDescriptor, PromoteDataStreamResponse, PromoteDataStreamRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Promotes a data stream from a replicated data stream managed by CCR to a regular data stream
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PromoteDataStreamResponse PromoteDataStream(Elastic.Clients.Elasticsearch.IndexName name, Action<PromoteDataStreamRequestDescriptor> configureRequest)
	{
		var descriptor = new PromoteDataStreamRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<PromoteDataStreamRequestDescriptor, PromoteDataStreamResponse, PromoteDataStreamRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Promotes a data stream from a replicated data stream managed by CCR to a regular data stream
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PromoteDataStreamResponse> PromoteDataStreamAsync(PromoteDataStreamRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<PromoteDataStreamRequestDescriptor, PromoteDataStreamResponse, PromoteDataStreamRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Promotes a data stream from a replicated data stream managed by CCR to a regular data stream
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PromoteDataStreamResponse> PromoteDataStreamAsync(Elastic.Clients.Elasticsearch.IndexName name, CancellationToken cancellationToken = default)
	{
		var descriptor = new PromoteDataStreamRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequestAsync<PromoteDataStreamRequestDescriptor, PromoteDataStreamResponse, PromoteDataStreamRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Promotes a data stream from a replicated data stream managed by CCR to a regular data stream
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PromoteDataStreamResponse> PromoteDataStreamAsync(Elastic.Clients.Elasticsearch.IndexName name, Action<PromoteDataStreamRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new PromoteDataStreamRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<PromoteDataStreamRequestDescriptor, PromoteDataStreamResponse, PromoteDataStreamRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Create or update an alias.
	/// Adds a data stream or index to an alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutAliasResponse PutAlias(PutAliasRequest request)
	{
		request.BeforeRequest();
		return DoRequest<PutAliasRequest, PutAliasResponse, PutAliasRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Create or update an alias.
	/// Adds a data stream or index to an alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutAliasResponse> PutAliasAsync(PutAliasRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<PutAliasRequest, PutAliasResponse, PutAliasRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Create or update an alias.
	/// Adds a data stream or index to an alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutAliasResponse PutAlias<TDocument>(PutAliasRequestDescriptor<TDocument> descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<PutAliasRequestDescriptor<TDocument>, PutAliasResponse, PutAliasRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Create or update an alias.
	/// Adds a data stream or index to an alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutAliasResponse PutAlias<TDocument>(Elastic.Clients.Elasticsearch.Indices indices, Elastic.Clients.Elasticsearch.Name name)
	{
		var descriptor = new PutAliasRequestDescriptor<TDocument>(indices, name);
		descriptor.BeforeRequest();
		return DoRequest<PutAliasRequestDescriptor<TDocument>, PutAliasResponse, PutAliasRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Create or update an alias.
	/// Adds a data stream or index to an alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutAliasResponse PutAlias<TDocument>(Elastic.Clients.Elasticsearch.Indices indices, Elastic.Clients.Elasticsearch.Name name, Action<PutAliasRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new PutAliasRequestDescriptor<TDocument>(indices, name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<PutAliasRequestDescriptor<TDocument>, PutAliasResponse, PutAliasRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Create or update an alias.
	/// Adds a data stream or index to an alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutAliasResponse PutAlias<TDocument>(Elastic.Clients.Elasticsearch.Name name)
	{
		var descriptor = new PutAliasRequestDescriptor<TDocument>(name);
		descriptor.BeforeRequest();
		return DoRequest<PutAliasRequestDescriptor<TDocument>, PutAliasResponse, PutAliasRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Create or update an alias.
	/// Adds a data stream or index to an alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutAliasResponse PutAlias<TDocument>(Elastic.Clients.Elasticsearch.Name name, Action<PutAliasRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new PutAliasRequestDescriptor<TDocument>(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<PutAliasRequestDescriptor<TDocument>, PutAliasResponse, PutAliasRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Create or update an alias.
	/// Adds a data stream or index to an alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutAliasResponse PutAlias(PutAliasRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<PutAliasRequestDescriptor, PutAliasResponse, PutAliasRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Create or update an alias.
	/// Adds a data stream or index to an alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutAliasResponse PutAlias(Elastic.Clients.Elasticsearch.Indices indices, Elastic.Clients.Elasticsearch.Name name)
	{
		var descriptor = new PutAliasRequestDescriptor(indices, name);
		descriptor.BeforeRequest();
		return DoRequest<PutAliasRequestDescriptor, PutAliasResponse, PutAliasRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Create or update an alias.
	/// Adds a data stream or index to an alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutAliasResponse PutAlias(Elastic.Clients.Elasticsearch.Indices indices, Elastic.Clients.Elasticsearch.Name name, Action<PutAliasRequestDescriptor> configureRequest)
	{
		var descriptor = new PutAliasRequestDescriptor(indices, name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<PutAliasRequestDescriptor, PutAliasResponse, PutAliasRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Create or update an alias.
	/// Adds a data stream or index to an alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutAliasResponse> PutAliasAsync<TDocument>(PutAliasRequestDescriptor<TDocument> descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<PutAliasRequestDescriptor<TDocument>, PutAliasResponse, PutAliasRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Create or update an alias.
	/// Adds a data stream or index to an alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutAliasResponse> PutAliasAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices indices, Elastic.Clients.Elasticsearch.Name name, CancellationToken cancellationToken = default)
	{
		var descriptor = new PutAliasRequestDescriptor<TDocument>(indices, name);
		descriptor.BeforeRequest();
		return DoRequestAsync<PutAliasRequestDescriptor<TDocument>, PutAliasResponse, PutAliasRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Create or update an alias.
	/// Adds a data stream or index to an alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutAliasResponse> PutAliasAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices indices, Elastic.Clients.Elasticsearch.Name name, Action<PutAliasRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new PutAliasRequestDescriptor<TDocument>(indices, name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<PutAliasRequestDescriptor<TDocument>, PutAliasResponse, PutAliasRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Create or update an alias.
	/// Adds a data stream or index to an alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutAliasResponse> PutAliasAsync<TDocument>(Elastic.Clients.Elasticsearch.Name name, CancellationToken cancellationToken = default)
	{
		var descriptor = new PutAliasRequestDescriptor<TDocument>(name);
		descriptor.BeforeRequest();
		return DoRequestAsync<PutAliasRequestDescriptor<TDocument>, PutAliasResponse, PutAliasRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Create or update an alias.
	/// Adds a data stream or index to an alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutAliasResponse> PutAliasAsync<TDocument>(Elastic.Clients.Elasticsearch.Name name, Action<PutAliasRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new PutAliasRequestDescriptor<TDocument>(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<PutAliasRequestDescriptor<TDocument>, PutAliasResponse, PutAliasRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Create or update an alias.
	/// Adds a data stream or index to an alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutAliasResponse> PutAliasAsync(PutAliasRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<PutAliasRequestDescriptor, PutAliasResponse, PutAliasRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Create or update an alias.
	/// Adds a data stream or index to an alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutAliasResponse> PutAliasAsync(Elastic.Clients.Elasticsearch.Indices indices, Elastic.Clients.Elasticsearch.Name name, CancellationToken cancellationToken = default)
	{
		var descriptor = new PutAliasRequestDescriptor(indices, name);
		descriptor.BeforeRequest();
		return DoRequestAsync<PutAliasRequestDescriptor, PutAliasResponse, PutAliasRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Create or update an alias.
	/// Adds a data stream or index to an alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutAliasResponse> PutAliasAsync(Elastic.Clients.Elasticsearch.Indices indices, Elastic.Clients.Elasticsearch.Name name, Action<PutAliasRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new PutAliasRequestDescriptor(indices, name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<PutAliasRequestDescriptor, PutAliasResponse, PutAliasRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Update data stream lifecycles.
	/// Update the data stream lifecycle of the specified data streams.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams-put-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutDataLifecycleResponse PutDataLifecycle(PutDataLifecycleRequest request)
	{
		request.BeforeRequest();
		return DoRequest<PutDataLifecycleRequest, PutDataLifecycleResponse, PutDataLifecycleRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Update data stream lifecycles.
	/// Update the data stream lifecycle of the specified data streams.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams-put-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutDataLifecycleResponse> PutDataLifecycleAsync(PutDataLifecycleRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<PutDataLifecycleRequest, PutDataLifecycleResponse, PutDataLifecycleRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Update data stream lifecycles.
	/// Update the data stream lifecycle of the specified data streams.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams-put-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutDataLifecycleResponse PutDataLifecycle(PutDataLifecycleRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<PutDataLifecycleRequestDescriptor, PutDataLifecycleResponse, PutDataLifecycleRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Update data stream lifecycles.
	/// Update the data stream lifecycle of the specified data streams.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams-put-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutDataLifecycleResponse PutDataLifecycle(Elastic.Clients.Elasticsearch.DataStreamNames name)
	{
		var descriptor = new PutDataLifecycleRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequest<PutDataLifecycleRequestDescriptor, PutDataLifecycleResponse, PutDataLifecycleRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Update data stream lifecycles.
	/// Update the data stream lifecycle of the specified data streams.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams-put-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutDataLifecycleResponse PutDataLifecycle(Elastic.Clients.Elasticsearch.DataStreamNames name, Action<PutDataLifecycleRequestDescriptor> configureRequest)
	{
		var descriptor = new PutDataLifecycleRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<PutDataLifecycleRequestDescriptor, PutDataLifecycleResponse, PutDataLifecycleRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Update data stream lifecycles.
	/// Update the data stream lifecycle of the specified data streams.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams-put-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutDataLifecycleResponse> PutDataLifecycleAsync(PutDataLifecycleRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<PutDataLifecycleRequestDescriptor, PutDataLifecycleResponse, PutDataLifecycleRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Update data stream lifecycles.
	/// Update the data stream lifecycle of the specified data streams.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams-put-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutDataLifecycleResponse> PutDataLifecycleAsync(Elastic.Clients.Elasticsearch.DataStreamNames name, CancellationToken cancellationToken = default)
	{
		var descriptor = new PutDataLifecycleRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequestAsync<PutDataLifecycleRequestDescriptor, PutDataLifecycleResponse, PutDataLifecycleRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Update data stream lifecycles.
	/// Update the data stream lifecycle of the specified data streams.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams-put-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutDataLifecycleResponse> PutDataLifecycleAsync(Elastic.Clients.Elasticsearch.DataStreamNames name, Action<PutDataLifecycleRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new PutDataLifecycleRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<PutDataLifecycleRequestDescriptor, PutDataLifecycleResponse, PutDataLifecycleRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Create or update an index template.
	/// Index templates define settings, mappings, and aliases that can be applied automatically to new indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-put-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutIndexTemplateResponse PutIndexTemplate(PutIndexTemplateRequest request)
	{
		request.BeforeRequest();
		return DoRequest<PutIndexTemplateRequest, PutIndexTemplateResponse, PutIndexTemplateRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Create or update an index template.
	/// Index templates define settings, mappings, and aliases that can be applied automatically to new indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-put-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutIndexTemplateResponse> PutIndexTemplateAsync(PutIndexTemplateRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<PutIndexTemplateRequest, PutIndexTemplateResponse, PutIndexTemplateRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Create or update an index template.
	/// Index templates define settings, mappings, and aliases that can be applied automatically to new indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-put-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutIndexTemplateResponse PutIndexTemplate<TDocument>(PutIndexTemplateRequestDescriptor<TDocument> descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<PutIndexTemplateRequestDescriptor<TDocument>, PutIndexTemplateResponse, PutIndexTemplateRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Create or update an index template.
	/// Index templates define settings, mappings, and aliases that can be applied automatically to new indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-put-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutIndexTemplateResponse PutIndexTemplate<TDocument>(Elastic.Clients.Elasticsearch.Name name)
	{
		var descriptor = new PutIndexTemplateRequestDescriptor<TDocument>(name);
		descriptor.BeforeRequest();
		return DoRequest<PutIndexTemplateRequestDescriptor<TDocument>, PutIndexTemplateResponse, PutIndexTemplateRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Create or update an index template.
	/// Index templates define settings, mappings, and aliases that can be applied automatically to new indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-put-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutIndexTemplateResponse PutIndexTemplate<TDocument>(Elastic.Clients.Elasticsearch.Name name, Action<PutIndexTemplateRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new PutIndexTemplateRequestDescriptor<TDocument>(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<PutIndexTemplateRequestDescriptor<TDocument>, PutIndexTemplateResponse, PutIndexTemplateRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Create or update an index template.
	/// Index templates define settings, mappings, and aliases that can be applied automatically to new indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-put-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutIndexTemplateResponse PutIndexTemplate(PutIndexTemplateRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<PutIndexTemplateRequestDescriptor, PutIndexTemplateResponse, PutIndexTemplateRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Create or update an index template.
	/// Index templates define settings, mappings, and aliases that can be applied automatically to new indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-put-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutIndexTemplateResponse PutIndexTemplate(Elastic.Clients.Elasticsearch.Name name)
	{
		var descriptor = new PutIndexTemplateRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequest<PutIndexTemplateRequestDescriptor, PutIndexTemplateResponse, PutIndexTemplateRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Create or update an index template.
	/// Index templates define settings, mappings, and aliases that can be applied automatically to new indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-put-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutIndexTemplateResponse PutIndexTemplate(Elastic.Clients.Elasticsearch.Name name, Action<PutIndexTemplateRequestDescriptor> configureRequest)
	{
		var descriptor = new PutIndexTemplateRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<PutIndexTemplateRequestDescriptor, PutIndexTemplateResponse, PutIndexTemplateRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Create or update an index template.
	/// Index templates define settings, mappings, and aliases that can be applied automatically to new indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-put-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutIndexTemplateResponse> PutIndexTemplateAsync<TDocument>(PutIndexTemplateRequestDescriptor<TDocument> descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<PutIndexTemplateRequestDescriptor<TDocument>, PutIndexTemplateResponse, PutIndexTemplateRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Create or update an index template.
	/// Index templates define settings, mappings, and aliases that can be applied automatically to new indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-put-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutIndexTemplateResponse> PutIndexTemplateAsync<TDocument>(Elastic.Clients.Elasticsearch.Name name, CancellationToken cancellationToken = default)
	{
		var descriptor = new PutIndexTemplateRequestDescriptor<TDocument>(name);
		descriptor.BeforeRequest();
		return DoRequestAsync<PutIndexTemplateRequestDescriptor<TDocument>, PutIndexTemplateResponse, PutIndexTemplateRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Create or update an index template.
	/// Index templates define settings, mappings, and aliases that can be applied automatically to new indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-put-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutIndexTemplateResponse> PutIndexTemplateAsync<TDocument>(Elastic.Clients.Elasticsearch.Name name, Action<PutIndexTemplateRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new PutIndexTemplateRequestDescriptor<TDocument>(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<PutIndexTemplateRequestDescriptor<TDocument>, PutIndexTemplateResponse, PutIndexTemplateRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Create or update an index template.
	/// Index templates define settings, mappings, and aliases that can be applied automatically to new indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-put-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutIndexTemplateResponse> PutIndexTemplateAsync(PutIndexTemplateRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<PutIndexTemplateRequestDescriptor, PutIndexTemplateResponse, PutIndexTemplateRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Create or update an index template.
	/// Index templates define settings, mappings, and aliases that can be applied automatically to new indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-put-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutIndexTemplateResponse> PutIndexTemplateAsync(Elastic.Clients.Elasticsearch.Name name, CancellationToken cancellationToken = default)
	{
		var descriptor = new PutIndexTemplateRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequestAsync<PutIndexTemplateRequestDescriptor, PutIndexTemplateResponse, PutIndexTemplateRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Create or update an index template.
	/// Index templates define settings, mappings, and aliases that can be applied automatically to new indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-put-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutIndexTemplateResponse> PutIndexTemplateAsync(Elastic.Clients.Elasticsearch.Name name, Action<PutIndexTemplateRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new PutIndexTemplateRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<PutIndexTemplateRequestDescriptor, PutIndexTemplateResponse, PutIndexTemplateRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Update field mappings.
	/// Adds new fields to an existing data stream or index.
	/// You can also use this API to change the search settings of existing fields.
	/// For data streams, these changes are applied to all backing indices by default.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-put-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutMappingResponse PutMapping(PutMappingRequest request)
	{
		request.BeforeRequest();
		return DoRequest<PutMappingRequest, PutMappingResponse, PutMappingRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Update field mappings.
	/// Adds new fields to an existing data stream or index.
	/// You can also use this API to change the search settings of existing fields.
	/// For data streams, these changes are applied to all backing indices by default.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-put-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutMappingResponse> PutMappingAsync(PutMappingRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<PutMappingRequest, PutMappingResponse, PutMappingRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Update field mappings.
	/// Adds new fields to an existing data stream or index.
	/// You can also use this API to change the search settings of existing fields.
	/// For data streams, these changes are applied to all backing indices by default.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-put-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutMappingResponse PutMapping<TDocument>(PutMappingRequestDescriptor<TDocument> descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<PutMappingRequestDescriptor<TDocument>, PutMappingResponse, PutMappingRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Update field mappings.
	/// Adds new fields to an existing data stream or index.
	/// You can also use this API to change the search settings of existing fields.
	/// For data streams, these changes are applied to all backing indices by default.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-put-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutMappingResponse PutMapping<TDocument>(Elastic.Clients.Elasticsearch.Indices indices)
	{
		var descriptor = new PutMappingRequestDescriptor<TDocument>(indices);
		descriptor.BeforeRequest();
		return DoRequest<PutMappingRequestDescriptor<TDocument>, PutMappingResponse, PutMappingRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Update field mappings.
	/// Adds new fields to an existing data stream or index.
	/// You can also use this API to change the search settings of existing fields.
	/// For data streams, these changes are applied to all backing indices by default.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-put-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutMappingResponse PutMapping<TDocument>(Elastic.Clients.Elasticsearch.Indices indices, Action<PutMappingRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new PutMappingRequestDescriptor<TDocument>(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<PutMappingRequestDescriptor<TDocument>, PutMappingResponse, PutMappingRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Update field mappings.
	/// Adds new fields to an existing data stream or index.
	/// You can also use this API to change the search settings of existing fields.
	/// For data streams, these changes are applied to all backing indices by default.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-put-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutMappingResponse PutMapping<TDocument>()
	{
		var descriptor = new PutMappingRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequest<PutMappingRequestDescriptor<TDocument>, PutMappingResponse, PutMappingRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Update field mappings.
	/// Adds new fields to an existing data stream or index.
	/// You can also use this API to change the search settings of existing fields.
	/// For data streams, these changes are applied to all backing indices by default.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-put-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutMappingResponse PutMapping<TDocument>(Action<PutMappingRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new PutMappingRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<PutMappingRequestDescriptor<TDocument>, PutMappingResponse, PutMappingRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Update field mappings.
	/// Adds new fields to an existing data stream or index.
	/// You can also use this API to change the search settings of existing fields.
	/// For data streams, these changes are applied to all backing indices by default.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-put-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutMappingResponse PutMapping(PutMappingRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<PutMappingRequestDescriptor, PutMappingResponse, PutMappingRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Update field mappings.
	/// Adds new fields to an existing data stream or index.
	/// You can also use this API to change the search settings of existing fields.
	/// For data streams, these changes are applied to all backing indices by default.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-put-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutMappingResponse PutMapping(Elastic.Clients.Elasticsearch.Indices indices)
	{
		var descriptor = new PutMappingRequestDescriptor(indices);
		descriptor.BeforeRequest();
		return DoRequest<PutMappingRequestDescriptor, PutMappingResponse, PutMappingRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Update field mappings.
	/// Adds new fields to an existing data stream or index.
	/// You can also use this API to change the search settings of existing fields.
	/// For data streams, these changes are applied to all backing indices by default.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-put-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutMappingResponse PutMapping(Elastic.Clients.Elasticsearch.Indices indices, Action<PutMappingRequestDescriptor> configureRequest)
	{
		var descriptor = new PutMappingRequestDescriptor(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<PutMappingRequestDescriptor, PutMappingResponse, PutMappingRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Update field mappings.
	/// Adds new fields to an existing data stream or index.
	/// You can also use this API to change the search settings of existing fields.
	/// For data streams, these changes are applied to all backing indices by default.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-put-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutMappingResponse> PutMappingAsync<TDocument>(PutMappingRequestDescriptor<TDocument> descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<PutMappingRequestDescriptor<TDocument>, PutMappingResponse, PutMappingRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Update field mappings.
	/// Adds new fields to an existing data stream or index.
	/// You can also use this API to change the search settings of existing fields.
	/// For data streams, these changes are applied to all backing indices by default.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-put-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutMappingResponse> PutMappingAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices indices, CancellationToken cancellationToken = default)
	{
		var descriptor = new PutMappingRequestDescriptor<TDocument>(indices);
		descriptor.BeforeRequest();
		return DoRequestAsync<PutMappingRequestDescriptor<TDocument>, PutMappingResponse, PutMappingRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Update field mappings.
	/// Adds new fields to an existing data stream or index.
	/// You can also use this API to change the search settings of existing fields.
	/// For data streams, these changes are applied to all backing indices by default.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-put-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutMappingResponse> PutMappingAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices indices, Action<PutMappingRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new PutMappingRequestDescriptor<TDocument>(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<PutMappingRequestDescriptor<TDocument>, PutMappingResponse, PutMappingRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Update field mappings.
	/// Adds new fields to an existing data stream or index.
	/// You can also use this API to change the search settings of existing fields.
	/// For data streams, these changes are applied to all backing indices by default.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-put-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutMappingResponse> PutMappingAsync<TDocument>(CancellationToken cancellationToken = default)
	{
		var descriptor = new PutMappingRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequestAsync<PutMappingRequestDescriptor<TDocument>, PutMappingResponse, PutMappingRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Update field mappings.
	/// Adds new fields to an existing data stream or index.
	/// You can also use this API to change the search settings of existing fields.
	/// For data streams, these changes are applied to all backing indices by default.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-put-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutMappingResponse> PutMappingAsync<TDocument>(Action<PutMappingRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new PutMappingRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<PutMappingRequestDescriptor<TDocument>, PutMappingResponse, PutMappingRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Update field mappings.
	/// Adds new fields to an existing data stream or index.
	/// You can also use this API to change the search settings of existing fields.
	/// For data streams, these changes are applied to all backing indices by default.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-put-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutMappingResponse> PutMappingAsync(PutMappingRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<PutMappingRequestDescriptor, PutMappingResponse, PutMappingRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Update field mappings.
	/// Adds new fields to an existing data stream or index.
	/// You can also use this API to change the search settings of existing fields.
	/// For data streams, these changes are applied to all backing indices by default.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-put-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutMappingResponse> PutMappingAsync(Elastic.Clients.Elasticsearch.Indices indices, CancellationToken cancellationToken = default)
	{
		var descriptor = new PutMappingRequestDescriptor(indices);
		descriptor.BeforeRequest();
		return DoRequestAsync<PutMappingRequestDescriptor, PutMappingResponse, PutMappingRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Update field mappings.
	/// Adds new fields to an existing data stream or index.
	/// You can also use this API to change the search settings of existing fields.
	/// For data streams, these changes are applied to all backing indices by default.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-put-mapping.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutMappingResponse> PutMappingAsync(Elastic.Clients.Elasticsearch.Indices indices, Action<PutMappingRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new PutMappingRequestDescriptor(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<PutMappingRequestDescriptor, PutMappingResponse, PutMappingRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Update index settings.
	/// Changes dynamic index settings in real time. For data streams, index setting
	/// changes are applied to all backing indices by default.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-update-settings.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutIndicesSettingsResponse PutSettings(PutIndicesSettingsRequest request)
	{
		request.BeforeRequest();
		return DoRequest<PutIndicesSettingsRequest, PutIndicesSettingsResponse, PutIndicesSettingsRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Update index settings.
	/// Changes dynamic index settings in real time. For data streams, index setting
	/// changes are applied to all backing indices by default.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-update-settings.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutIndicesSettingsResponse> PutSettingsAsync(PutIndicesSettingsRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<PutIndicesSettingsRequest, PutIndicesSettingsResponse, PutIndicesSettingsRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Update index settings.
	/// Changes dynamic index settings in real time. For data streams, index setting
	/// changes are applied to all backing indices by default.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-update-settings.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutIndicesSettingsResponse PutSettings<TDocument>(PutIndicesSettingsRequestDescriptor<TDocument> descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<PutIndicesSettingsRequestDescriptor<TDocument>, PutIndicesSettingsResponse, PutIndicesSettingsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Update index settings.
	/// Changes dynamic index settings in real time. For data streams, index setting
	/// changes are applied to all backing indices by default.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-update-settings.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutIndicesSettingsResponse PutSettings<TDocument>(Elastic.Clients.Elasticsearch.IndexManagement.IndexSettings settings, Elastic.Clients.Elasticsearch.Indices? indices)
	{
		var descriptor = new PutIndicesSettingsRequestDescriptor<TDocument>(settings, indices);
		descriptor.BeforeRequest();
		return DoRequest<PutIndicesSettingsRequestDescriptor<TDocument>, PutIndicesSettingsResponse, PutIndicesSettingsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Update index settings.
	/// Changes dynamic index settings in real time. For data streams, index setting
	/// changes are applied to all backing indices by default.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-update-settings.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutIndicesSettingsResponse PutSettings<TDocument>(Elastic.Clients.Elasticsearch.IndexManagement.IndexSettings settings, Elastic.Clients.Elasticsearch.Indices? indices, Action<PutIndicesSettingsRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new PutIndicesSettingsRequestDescriptor<TDocument>(settings, indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<PutIndicesSettingsRequestDescriptor<TDocument>, PutIndicesSettingsResponse, PutIndicesSettingsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Update index settings.
	/// Changes dynamic index settings in real time. For data streams, index setting
	/// changes are applied to all backing indices by default.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-update-settings.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutIndicesSettingsResponse PutSettings<TDocument>(Elastic.Clients.Elasticsearch.IndexManagement.IndexSettings settings)
	{
		var descriptor = new PutIndicesSettingsRequestDescriptor<TDocument>(settings);
		descriptor.BeforeRequest();
		return DoRequest<PutIndicesSettingsRequestDescriptor<TDocument>, PutIndicesSettingsResponse, PutIndicesSettingsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Update index settings.
	/// Changes dynamic index settings in real time. For data streams, index setting
	/// changes are applied to all backing indices by default.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-update-settings.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutIndicesSettingsResponse PutSettings<TDocument>(Elastic.Clients.Elasticsearch.IndexManagement.IndexSettings settings, Action<PutIndicesSettingsRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new PutIndicesSettingsRequestDescriptor<TDocument>(settings);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<PutIndicesSettingsRequestDescriptor<TDocument>, PutIndicesSettingsResponse, PutIndicesSettingsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Update index settings.
	/// Changes dynamic index settings in real time. For data streams, index setting
	/// changes are applied to all backing indices by default.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-update-settings.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutIndicesSettingsResponse PutSettings(PutIndicesSettingsRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<PutIndicesSettingsRequestDescriptor, PutIndicesSettingsResponse, PutIndicesSettingsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Update index settings.
	/// Changes dynamic index settings in real time. For data streams, index setting
	/// changes are applied to all backing indices by default.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-update-settings.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutIndicesSettingsResponse PutSettings(Elastic.Clients.Elasticsearch.IndexManagement.IndexSettings settings, Elastic.Clients.Elasticsearch.Indices? indices)
	{
		var descriptor = new PutIndicesSettingsRequestDescriptor(settings, indices);
		descriptor.BeforeRequest();
		return DoRequest<PutIndicesSettingsRequestDescriptor, PutIndicesSettingsResponse, PutIndicesSettingsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Update index settings.
	/// Changes dynamic index settings in real time. For data streams, index setting
	/// changes are applied to all backing indices by default.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-update-settings.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutIndicesSettingsResponse PutSettings(Elastic.Clients.Elasticsearch.IndexManagement.IndexSettings settings, Elastic.Clients.Elasticsearch.Indices? indices, Action<PutIndicesSettingsRequestDescriptor> configureRequest)
	{
		var descriptor = new PutIndicesSettingsRequestDescriptor(settings, indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<PutIndicesSettingsRequestDescriptor, PutIndicesSettingsResponse, PutIndicesSettingsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Update index settings.
	/// Changes dynamic index settings in real time. For data streams, index setting
	/// changes are applied to all backing indices by default.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-update-settings.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutIndicesSettingsResponse PutSettings(Elastic.Clients.Elasticsearch.IndexManagement.IndexSettings settings)
	{
		var descriptor = new PutIndicesSettingsRequestDescriptor(settings);
		descriptor.BeforeRequest();
		return DoRequest<PutIndicesSettingsRequestDescriptor, PutIndicesSettingsResponse, PutIndicesSettingsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Update index settings.
	/// Changes dynamic index settings in real time. For data streams, index setting
	/// changes are applied to all backing indices by default.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-update-settings.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutIndicesSettingsResponse PutSettings(Elastic.Clients.Elasticsearch.IndexManagement.IndexSettings settings, Action<PutIndicesSettingsRequestDescriptor> configureRequest)
	{
		var descriptor = new PutIndicesSettingsRequestDescriptor(settings);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<PutIndicesSettingsRequestDescriptor, PutIndicesSettingsResponse, PutIndicesSettingsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Update index settings.
	/// Changes dynamic index settings in real time. For data streams, index setting
	/// changes are applied to all backing indices by default.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-update-settings.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutIndicesSettingsResponse> PutSettingsAsync<TDocument>(PutIndicesSettingsRequestDescriptor<TDocument> descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<PutIndicesSettingsRequestDescriptor<TDocument>, PutIndicesSettingsResponse, PutIndicesSettingsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Update index settings.
	/// Changes dynamic index settings in real time. For data streams, index setting
	/// changes are applied to all backing indices by default.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-update-settings.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutIndicesSettingsResponse> PutSettingsAsync<TDocument>(Elastic.Clients.Elasticsearch.IndexManagement.IndexSettings settings, Elastic.Clients.Elasticsearch.Indices? indices, CancellationToken cancellationToken = default)
	{
		var descriptor = new PutIndicesSettingsRequestDescriptor<TDocument>(settings, indices);
		descriptor.BeforeRequest();
		return DoRequestAsync<PutIndicesSettingsRequestDescriptor<TDocument>, PutIndicesSettingsResponse, PutIndicesSettingsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Update index settings.
	/// Changes dynamic index settings in real time. For data streams, index setting
	/// changes are applied to all backing indices by default.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-update-settings.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutIndicesSettingsResponse> PutSettingsAsync<TDocument>(Elastic.Clients.Elasticsearch.IndexManagement.IndexSettings settings, Elastic.Clients.Elasticsearch.Indices? indices, Action<PutIndicesSettingsRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new PutIndicesSettingsRequestDescriptor<TDocument>(settings, indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<PutIndicesSettingsRequestDescriptor<TDocument>, PutIndicesSettingsResponse, PutIndicesSettingsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Update index settings.
	/// Changes dynamic index settings in real time. For data streams, index setting
	/// changes are applied to all backing indices by default.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-update-settings.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutIndicesSettingsResponse> PutSettingsAsync<TDocument>(Elastic.Clients.Elasticsearch.IndexManagement.IndexSettings settings, CancellationToken cancellationToken = default)
	{
		var descriptor = new PutIndicesSettingsRequestDescriptor<TDocument>(settings);
		descriptor.BeforeRequest();
		return DoRequestAsync<PutIndicesSettingsRequestDescriptor<TDocument>, PutIndicesSettingsResponse, PutIndicesSettingsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Update index settings.
	/// Changes dynamic index settings in real time. For data streams, index setting
	/// changes are applied to all backing indices by default.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-update-settings.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutIndicesSettingsResponse> PutSettingsAsync<TDocument>(Elastic.Clients.Elasticsearch.IndexManagement.IndexSettings settings, Action<PutIndicesSettingsRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new PutIndicesSettingsRequestDescriptor<TDocument>(settings);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<PutIndicesSettingsRequestDescriptor<TDocument>, PutIndicesSettingsResponse, PutIndicesSettingsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Update index settings.
	/// Changes dynamic index settings in real time. For data streams, index setting
	/// changes are applied to all backing indices by default.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-update-settings.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutIndicesSettingsResponse> PutSettingsAsync(PutIndicesSettingsRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<PutIndicesSettingsRequestDescriptor, PutIndicesSettingsResponse, PutIndicesSettingsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Update index settings.
	/// Changes dynamic index settings in real time. For data streams, index setting
	/// changes are applied to all backing indices by default.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-update-settings.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutIndicesSettingsResponse> PutSettingsAsync(Elastic.Clients.Elasticsearch.IndexManagement.IndexSettings settings, Elastic.Clients.Elasticsearch.Indices? indices, CancellationToken cancellationToken = default)
	{
		var descriptor = new PutIndicesSettingsRequestDescriptor(settings, indices);
		descriptor.BeforeRequest();
		return DoRequestAsync<PutIndicesSettingsRequestDescriptor, PutIndicesSettingsResponse, PutIndicesSettingsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Update index settings.
	/// Changes dynamic index settings in real time. For data streams, index setting
	/// changes are applied to all backing indices by default.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-update-settings.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutIndicesSettingsResponse> PutSettingsAsync(Elastic.Clients.Elasticsearch.IndexManagement.IndexSettings settings, Elastic.Clients.Elasticsearch.Indices? indices, Action<PutIndicesSettingsRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new PutIndicesSettingsRequestDescriptor(settings, indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<PutIndicesSettingsRequestDescriptor, PutIndicesSettingsResponse, PutIndicesSettingsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Update index settings.
	/// Changes dynamic index settings in real time. For data streams, index setting
	/// changes are applied to all backing indices by default.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-update-settings.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutIndicesSettingsResponse> PutSettingsAsync(Elastic.Clients.Elasticsearch.IndexManagement.IndexSettings settings, CancellationToken cancellationToken = default)
	{
		var descriptor = new PutIndicesSettingsRequestDescriptor(settings);
		descriptor.BeforeRequest();
		return DoRequestAsync<PutIndicesSettingsRequestDescriptor, PutIndicesSettingsResponse, PutIndicesSettingsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Update index settings.
	/// Changes dynamic index settings in real time. For data streams, index setting
	/// changes are applied to all backing indices by default.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-update-settings.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutIndicesSettingsResponse> PutSettingsAsync(Elastic.Clients.Elasticsearch.IndexManagement.IndexSettings settings, Action<PutIndicesSettingsRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new PutIndicesSettingsRequestDescriptor(settings);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<PutIndicesSettingsRequestDescriptor, PutIndicesSettingsResponse, PutIndicesSettingsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Create or update an index template.
	/// Index templates define settings, mappings, and aliases that can be applied automatically to new indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates-v1.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutTemplateResponse PutTemplate(PutTemplateRequest request)
	{
		request.BeforeRequest();
		return DoRequest<PutTemplateRequest, PutTemplateResponse, PutTemplateRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Create or update an index template.
	/// Index templates define settings, mappings, and aliases that can be applied automatically to new indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates-v1.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutTemplateResponse> PutTemplateAsync(PutTemplateRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<PutTemplateRequest, PutTemplateResponse, PutTemplateRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Create or update an index template.
	/// Index templates define settings, mappings, and aliases that can be applied automatically to new indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates-v1.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutTemplateResponse PutTemplate<TDocument>(PutTemplateRequestDescriptor<TDocument> descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<PutTemplateRequestDescriptor<TDocument>, PutTemplateResponse, PutTemplateRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Create or update an index template.
	/// Index templates define settings, mappings, and aliases that can be applied automatically to new indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates-v1.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutTemplateResponse PutTemplate<TDocument>(Elastic.Clients.Elasticsearch.Name name)
	{
		var descriptor = new PutTemplateRequestDescriptor<TDocument>(name);
		descriptor.BeforeRequest();
		return DoRequest<PutTemplateRequestDescriptor<TDocument>, PutTemplateResponse, PutTemplateRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Create or update an index template.
	/// Index templates define settings, mappings, and aliases that can be applied automatically to new indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates-v1.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutTemplateResponse PutTemplate<TDocument>(Elastic.Clients.Elasticsearch.Name name, Action<PutTemplateRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new PutTemplateRequestDescriptor<TDocument>(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<PutTemplateRequestDescriptor<TDocument>, PutTemplateResponse, PutTemplateRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Create or update an index template.
	/// Index templates define settings, mappings, and aliases that can be applied automatically to new indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates-v1.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutTemplateResponse PutTemplate(PutTemplateRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<PutTemplateRequestDescriptor, PutTemplateResponse, PutTemplateRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Create or update an index template.
	/// Index templates define settings, mappings, and aliases that can be applied automatically to new indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates-v1.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutTemplateResponse PutTemplate(Elastic.Clients.Elasticsearch.Name name)
	{
		var descriptor = new PutTemplateRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequest<PutTemplateRequestDescriptor, PutTemplateResponse, PutTemplateRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Create or update an index template.
	/// Index templates define settings, mappings, and aliases that can be applied automatically to new indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates-v1.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutTemplateResponse PutTemplate(Elastic.Clients.Elasticsearch.Name name, Action<PutTemplateRequestDescriptor> configureRequest)
	{
		var descriptor = new PutTemplateRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<PutTemplateRequestDescriptor, PutTemplateResponse, PutTemplateRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Create or update an index template.
	/// Index templates define settings, mappings, and aliases that can be applied automatically to new indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates-v1.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutTemplateResponse> PutTemplateAsync<TDocument>(PutTemplateRequestDescriptor<TDocument> descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<PutTemplateRequestDescriptor<TDocument>, PutTemplateResponse, PutTemplateRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Create or update an index template.
	/// Index templates define settings, mappings, and aliases that can be applied automatically to new indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates-v1.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutTemplateResponse> PutTemplateAsync<TDocument>(Elastic.Clients.Elasticsearch.Name name, CancellationToken cancellationToken = default)
	{
		var descriptor = new PutTemplateRequestDescriptor<TDocument>(name);
		descriptor.BeforeRequest();
		return DoRequestAsync<PutTemplateRequestDescriptor<TDocument>, PutTemplateResponse, PutTemplateRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Create or update an index template.
	/// Index templates define settings, mappings, and aliases that can be applied automatically to new indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates-v1.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutTemplateResponse> PutTemplateAsync<TDocument>(Elastic.Clients.Elasticsearch.Name name, Action<PutTemplateRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new PutTemplateRequestDescriptor<TDocument>(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<PutTemplateRequestDescriptor<TDocument>, PutTemplateResponse, PutTemplateRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Create or update an index template.
	/// Index templates define settings, mappings, and aliases that can be applied automatically to new indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates-v1.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutTemplateResponse> PutTemplateAsync(PutTemplateRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<PutTemplateRequestDescriptor, PutTemplateResponse, PutTemplateRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Create or update an index template.
	/// Index templates define settings, mappings, and aliases that can be applied automatically to new indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates-v1.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutTemplateResponse> PutTemplateAsync(Elastic.Clients.Elasticsearch.Name name, CancellationToken cancellationToken = default)
	{
		var descriptor = new PutTemplateRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequestAsync<PutTemplateRequestDescriptor, PutTemplateResponse, PutTemplateRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Create or update an index template.
	/// Index templates define settings, mappings, and aliases that can be applied automatically to new indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates-v1.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutTemplateResponse> PutTemplateAsync(Elastic.Clients.Elasticsearch.Name name, Action<PutTemplateRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new PutTemplateRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<PutTemplateRequestDescriptor, PutTemplateResponse, PutTemplateRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Returns information about ongoing and completed shard recoveries for one or more indices.
	/// For data streams, the API returns information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-recovery.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RecoveryResponse Recovery(RecoveryRequest request)
	{
		request.BeforeRequest();
		return DoRequest<RecoveryRequest, RecoveryResponse, RecoveryRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Returns information about ongoing and completed shard recoveries for one or more indices.
	/// For data streams, the API returns information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-recovery.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RecoveryResponse> RecoveryAsync(RecoveryRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<RecoveryRequest, RecoveryResponse, RecoveryRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Returns information about ongoing and completed shard recoveries for one or more indices.
	/// For data streams, the API returns information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-recovery.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RecoveryResponse Recovery<TDocument>(RecoveryRequestDescriptor<TDocument> descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<RecoveryRequestDescriptor<TDocument>, RecoveryResponse, RecoveryRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Returns information about ongoing and completed shard recoveries for one or more indices.
	/// For data streams, the API returns information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-recovery.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RecoveryResponse Recovery<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices)
	{
		var descriptor = new RecoveryRequestDescriptor<TDocument>(indices);
		descriptor.BeforeRequest();
		return DoRequest<RecoveryRequestDescriptor<TDocument>, RecoveryResponse, RecoveryRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Returns information about ongoing and completed shard recoveries for one or more indices.
	/// For data streams, the API returns information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-recovery.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RecoveryResponse Recovery<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices, Action<RecoveryRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new RecoveryRequestDescriptor<TDocument>(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<RecoveryRequestDescriptor<TDocument>, RecoveryResponse, RecoveryRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Returns information about ongoing and completed shard recoveries for one or more indices.
	/// For data streams, the API returns information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-recovery.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RecoveryResponse Recovery<TDocument>()
	{
		var descriptor = new RecoveryRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequest<RecoveryRequestDescriptor<TDocument>, RecoveryResponse, RecoveryRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Returns information about ongoing and completed shard recoveries for one or more indices.
	/// For data streams, the API returns information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-recovery.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RecoveryResponse Recovery<TDocument>(Action<RecoveryRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new RecoveryRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<RecoveryRequestDescriptor<TDocument>, RecoveryResponse, RecoveryRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Returns information about ongoing and completed shard recoveries for one or more indices.
	/// For data streams, the API returns information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-recovery.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RecoveryResponse Recovery(RecoveryRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<RecoveryRequestDescriptor, RecoveryResponse, RecoveryRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Returns information about ongoing and completed shard recoveries for one or more indices.
	/// For data streams, the API returns information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-recovery.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RecoveryResponse Recovery(Elastic.Clients.Elasticsearch.Indices? indices)
	{
		var descriptor = new RecoveryRequestDescriptor(indices);
		descriptor.BeforeRequest();
		return DoRequest<RecoveryRequestDescriptor, RecoveryResponse, RecoveryRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Returns information about ongoing and completed shard recoveries for one or more indices.
	/// For data streams, the API returns information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-recovery.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RecoveryResponse Recovery(Elastic.Clients.Elasticsearch.Indices? indices, Action<RecoveryRequestDescriptor> configureRequest)
	{
		var descriptor = new RecoveryRequestDescriptor(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<RecoveryRequestDescriptor, RecoveryResponse, RecoveryRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Returns information about ongoing and completed shard recoveries for one or more indices.
	/// For data streams, the API returns information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-recovery.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RecoveryResponse Recovery()
	{
		var descriptor = new RecoveryRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequest<RecoveryRequestDescriptor, RecoveryResponse, RecoveryRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Returns information about ongoing and completed shard recoveries for one or more indices.
	/// For data streams, the API returns information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-recovery.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RecoveryResponse Recovery(Action<RecoveryRequestDescriptor> configureRequest)
	{
		var descriptor = new RecoveryRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<RecoveryRequestDescriptor, RecoveryResponse, RecoveryRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Returns information about ongoing and completed shard recoveries for one or more indices.
	/// For data streams, the API returns information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-recovery.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RecoveryResponse> RecoveryAsync<TDocument>(RecoveryRequestDescriptor<TDocument> descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<RecoveryRequestDescriptor<TDocument>, RecoveryResponse, RecoveryRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Returns information about ongoing and completed shard recoveries for one or more indices.
	/// For data streams, the API returns information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-recovery.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RecoveryResponse> RecoveryAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices, CancellationToken cancellationToken = default)
	{
		var descriptor = new RecoveryRequestDescriptor<TDocument>(indices);
		descriptor.BeforeRequest();
		return DoRequestAsync<RecoveryRequestDescriptor<TDocument>, RecoveryResponse, RecoveryRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Returns information about ongoing and completed shard recoveries for one or more indices.
	/// For data streams, the API returns information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-recovery.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RecoveryResponse> RecoveryAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices, Action<RecoveryRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new RecoveryRequestDescriptor<TDocument>(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<RecoveryRequestDescriptor<TDocument>, RecoveryResponse, RecoveryRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Returns information about ongoing and completed shard recoveries for one or more indices.
	/// For data streams, the API returns information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-recovery.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RecoveryResponse> RecoveryAsync<TDocument>(CancellationToken cancellationToken = default)
	{
		var descriptor = new RecoveryRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequestAsync<RecoveryRequestDescriptor<TDocument>, RecoveryResponse, RecoveryRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Returns information about ongoing and completed shard recoveries for one or more indices.
	/// For data streams, the API returns information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-recovery.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RecoveryResponse> RecoveryAsync<TDocument>(Action<RecoveryRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new RecoveryRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<RecoveryRequestDescriptor<TDocument>, RecoveryResponse, RecoveryRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Returns information about ongoing and completed shard recoveries for one or more indices.
	/// For data streams, the API returns information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-recovery.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RecoveryResponse> RecoveryAsync(RecoveryRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<RecoveryRequestDescriptor, RecoveryResponse, RecoveryRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Returns information about ongoing and completed shard recoveries for one or more indices.
	/// For data streams, the API returns information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-recovery.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RecoveryResponse> RecoveryAsync(Elastic.Clients.Elasticsearch.Indices? indices, CancellationToken cancellationToken = default)
	{
		var descriptor = new RecoveryRequestDescriptor(indices);
		descriptor.BeforeRequest();
		return DoRequestAsync<RecoveryRequestDescriptor, RecoveryResponse, RecoveryRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Returns information about ongoing and completed shard recoveries for one or more indices.
	/// For data streams, the API returns information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-recovery.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RecoveryResponse> RecoveryAsync(Elastic.Clients.Elasticsearch.Indices? indices, Action<RecoveryRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new RecoveryRequestDescriptor(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<RecoveryRequestDescriptor, RecoveryResponse, RecoveryRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Returns information about ongoing and completed shard recoveries for one or more indices.
	/// For data streams, the API returns information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-recovery.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RecoveryResponse> RecoveryAsync(CancellationToken cancellationToken = default)
	{
		var descriptor = new RecoveryRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequestAsync<RecoveryRequestDescriptor, RecoveryResponse, RecoveryRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Returns information about ongoing and completed shard recoveries for one or more indices.
	/// For data streams, the API returns information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-recovery.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RecoveryResponse> RecoveryAsync(Action<RecoveryRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new RecoveryRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<RecoveryRequestDescriptor, RecoveryResponse, RecoveryRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Refresh an index.
	/// A refresh makes recent operations performed on one or more indices available for search.
	/// For data streams, the API runs the refresh operation on the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-refresh.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RefreshResponse Refresh(RefreshRequest request)
	{
		request.BeforeRequest();
		return DoRequest<RefreshRequest, RefreshResponse, RefreshRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Refresh an index.
	/// A refresh makes recent operations performed on one or more indices available for search.
	/// For data streams, the API runs the refresh operation on the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-refresh.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RefreshResponse> RefreshAsync(RefreshRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<RefreshRequest, RefreshResponse, RefreshRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Refresh an index.
	/// A refresh makes recent operations performed on one or more indices available for search.
	/// For data streams, the API runs the refresh operation on the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-refresh.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RefreshResponse Refresh<TDocument>(RefreshRequestDescriptor<TDocument> descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<RefreshRequestDescriptor<TDocument>, RefreshResponse, RefreshRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Refresh an index.
	/// A refresh makes recent operations performed on one or more indices available for search.
	/// For data streams, the API runs the refresh operation on the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-refresh.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RefreshResponse Refresh<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices)
	{
		var descriptor = new RefreshRequestDescriptor<TDocument>(indices);
		descriptor.BeforeRequest();
		return DoRequest<RefreshRequestDescriptor<TDocument>, RefreshResponse, RefreshRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Refresh an index.
	/// A refresh makes recent operations performed on one or more indices available for search.
	/// For data streams, the API runs the refresh operation on the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-refresh.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RefreshResponse Refresh<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices, Action<RefreshRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new RefreshRequestDescriptor<TDocument>(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<RefreshRequestDescriptor<TDocument>, RefreshResponse, RefreshRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Refresh an index.
	/// A refresh makes recent operations performed on one or more indices available for search.
	/// For data streams, the API runs the refresh operation on the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-refresh.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RefreshResponse Refresh<TDocument>()
	{
		var descriptor = new RefreshRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequest<RefreshRequestDescriptor<TDocument>, RefreshResponse, RefreshRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Refresh an index.
	/// A refresh makes recent operations performed on one or more indices available for search.
	/// For data streams, the API runs the refresh operation on the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-refresh.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RefreshResponse Refresh<TDocument>(Action<RefreshRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new RefreshRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<RefreshRequestDescriptor<TDocument>, RefreshResponse, RefreshRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Refresh an index.
	/// A refresh makes recent operations performed on one or more indices available for search.
	/// For data streams, the API runs the refresh operation on the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-refresh.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RefreshResponse Refresh(RefreshRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<RefreshRequestDescriptor, RefreshResponse, RefreshRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Refresh an index.
	/// A refresh makes recent operations performed on one or more indices available for search.
	/// For data streams, the API runs the refresh operation on the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-refresh.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RefreshResponse Refresh(Elastic.Clients.Elasticsearch.Indices? indices)
	{
		var descriptor = new RefreshRequestDescriptor(indices);
		descriptor.BeforeRequest();
		return DoRequest<RefreshRequestDescriptor, RefreshResponse, RefreshRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Refresh an index.
	/// A refresh makes recent operations performed on one or more indices available for search.
	/// For data streams, the API runs the refresh operation on the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-refresh.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RefreshResponse Refresh(Elastic.Clients.Elasticsearch.Indices? indices, Action<RefreshRequestDescriptor> configureRequest)
	{
		var descriptor = new RefreshRequestDescriptor(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<RefreshRequestDescriptor, RefreshResponse, RefreshRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Refresh an index.
	/// A refresh makes recent operations performed on one or more indices available for search.
	/// For data streams, the API runs the refresh operation on the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-refresh.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RefreshResponse Refresh()
	{
		var descriptor = new RefreshRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequest<RefreshRequestDescriptor, RefreshResponse, RefreshRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Refresh an index.
	/// A refresh makes recent operations performed on one or more indices available for search.
	/// For data streams, the API runs the refresh operation on the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-refresh.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RefreshResponse Refresh(Action<RefreshRequestDescriptor> configureRequest)
	{
		var descriptor = new RefreshRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<RefreshRequestDescriptor, RefreshResponse, RefreshRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Refresh an index.
	/// A refresh makes recent operations performed on one or more indices available for search.
	/// For data streams, the API runs the refresh operation on the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-refresh.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RefreshResponse> RefreshAsync<TDocument>(RefreshRequestDescriptor<TDocument> descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<RefreshRequestDescriptor<TDocument>, RefreshResponse, RefreshRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Refresh an index.
	/// A refresh makes recent operations performed on one or more indices available for search.
	/// For data streams, the API runs the refresh operation on the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-refresh.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RefreshResponse> RefreshAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices, CancellationToken cancellationToken = default)
	{
		var descriptor = new RefreshRequestDescriptor<TDocument>(indices);
		descriptor.BeforeRequest();
		return DoRequestAsync<RefreshRequestDescriptor<TDocument>, RefreshResponse, RefreshRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Refresh an index.
	/// A refresh makes recent operations performed on one or more indices available for search.
	/// For data streams, the API runs the refresh operation on the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-refresh.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RefreshResponse> RefreshAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices, Action<RefreshRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new RefreshRequestDescriptor<TDocument>(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<RefreshRequestDescriptor<TDocument>, RefreshResponse, RefreshRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Refresh an index.
	/// A refresh makes recent operations performed on one or more indices available for search.
	/// For data streams, the API runs the refresh operation on the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-refresh.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RefreshResponse> RefreshAsync<TDocument>(CancellationToken cancellationToken = default)
	{
		var descriptor = new RefreshRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequestAsync<RefreshRequestDescriptor<TDocument>, RefreshResponse, RefreshRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Refresh an index.
	/// A refresh makes recent operations performed on one or more indices available for search.
	/// For data streams, the API runs the refresh operation on the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-refresh.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RefreshResponse> RefreshAsync<TDocument>(Action<RefreshRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new RefreshRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<RefreshRequestDescriptor<TDocument>, RefreshResponse, RefreshRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Refresh an index.
	/// A refresh makes recent operations performed on one or more indices available for search.
	/// For data streams, the API runs the refresh operation on the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-refresh.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RefreshResponse> RefreshAsync(RefreshRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<RefreshRequestDescriptor, RefreshResponse, RefreshRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Refresh an index.
	/// A refresh makes recent operations performed on one or more indices available for search.
	/// For data streams, the API runs the refresh operation on the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-refresh.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RefreshResponse> RefreshAsync(Elastic.Clients.Elasticsearch.Indices? indices, CancellationToken cancellationToken = default)
	{
		var descriptor = new RefreshRequestDescriptor(indices);
		descriptor.BeforeRequest();
		return DoRequestAsync<RefreshRequestDescriptor, RefreshResponse, RefreshRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Refresh an index.
	/// A refresh makes recent operations performed on one or more indices available for search.
	/// For data streams, the API runs the refresh operation on the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-refresh.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RefreshResponse> RefreshAsync(Elastic.Clients.Elasticsearch.Indices? indices, Action<RefreshRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new RefreshRequestDescriptor(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<RefreshRequestDescriptor, RefreshResponse, RefreshRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Refresh an index.
	/// A refresh makes recent operations performed on one or more indices available for search.
	/// For data streams, the API runs the refresh operation on the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-refresh.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RefreshResponse> RefreshAsync(CancellationToken cancellationToken = default)
	{
		var descriptor = new RefreshRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequestAsync<RefreshRequestDescriptor, RefreshResponse, RefreshRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Refresh an index.
	/// A refresh makes recent operations performed on one or more indices available for search.
	/// For data streams, the API runs the refresh operation on the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-refresh.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RefreshResponse> RefreshAsync(Action<RefreshRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new RefreshRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<RefreshRequestDescriptor, RefreshResponse, RefreshRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Reloads an index's search analyzers and their resources.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-reload-analyzers.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ReloadSearchAnalyzersResponse ReloadSearchAnalyzers(ReloadSearchAnalyzersRequest request)
	{
		request.BeforeRequest();
		return DoRequest<ReloadSearchAnalyzersRequest, ReloadSearchAnalyzersResponse, ReloadSearchAnalyzersRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Reloads an index's search analyzers and their resources.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-reload-analyzers.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ReloadSearchAnalyzersResponse> ReloadSearchAnalyzersAsync(ReloadSearchAnalyzersRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<ReloadSearchAnalyzersRequest, ReloadSearchAnalyzersResponse, ReloadSearchAnalyzersRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Reloads an index's search analyzers and their resources.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-reload-analyzers.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ReloadSearchAnalyzersResponse ReloadSearchAnalyzers<TDocument>(ReloadSearchAnalyzersRequestDescriptor<TDocument> descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<ReloadSearchAnalyzersRequestDescriptor<TDocument>, ReloadSearchAnalyzersResponse, ReloadSearchAnalyzersRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Reloads an index's search analyzers and their resources.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-reload-analyzers.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ReloadSearchAnalyzersResponse ReloadSearchAnalyzers<TDocument>(Elastic.Clients.Elasticsearch.Indices indices)
	{
		var descriptor = new ReloadSearchAnalyzersRequestDescriptor<TDocument>(indices);
		descriptor.BeforeRequest();
		return DoRequest<ReloadSearchAnalyzersRequestDescriptor<TDocument>, ReloadSearchAnalyzersResponse, ReloadSearchAnalyzersRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Reloads an index's search analyzers and their resources.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-reload-analyzers.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ReloadSearchAnalyzersResponse ReloadSearchAnalyzers<TDocument>(Elastic.Clients.Elasticsearch.Indices indices, Action<ReloadSearchAnalyzersRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new ReloadSearchAnalyzersRequestDescriptor<TDocument>(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<ReloadSearchAnalyzersRequestDescriptor<TDocument>, ReloadSearchAnalyzersResponse, ReloadSearchAnalyzersRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Reloads an index's search analyzers and their resources.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-reload-analyzers.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ReloadSearchAnalyzersResponse ReloadSearchAnalyzers<TDocument>()
	{
		var descriptor = new ReloadSearchAnalyzersRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequest<ReloadSearchAnalyzersRequestDescriptor<TDocument>, ReloadSearchAnalyzersResponse, ReloadSearchAnalyzersRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Reloads an index's search analyzers and their resources.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-reload-analyzers.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ReloadSearchAnalyzersResponse ReloadSearchAnalyzers<TDocument>(Action<ReloadSearchAnalyzersRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new ReloadSearchAnalyzersRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<ReloadSearchAnalyzersRequestDescriptor<TDocument>, ReloadSearchAnalyzersResponse, ReloadSearchAnalyzersRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Reloads an index's search analyzers and their resources.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-reload-analyzers.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ReloadSearchAnalyzersResponse ReloadSearchAnalyzers(ReloadSearchAnalyzersRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<ReloadSearchAnalyzersRequestDescriptor, ReloadSearchAnalyzersResponse, ReloadSearchAnalyzersRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Reloads an index's search analyzers and their resources.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-reload-analyzers.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ReloadSearchAnalyzersResponse ReloadSearchAnalyzers(Elastic.Clients.Elasticsearch.Indices indices)
	{
		var descriptor = new ReloadSearchAnalyzersRequestDescriptor(indices);
		descriptor.BeforeRequest();
		return DoRequest<ReloadSearchAnalyzersRequestDescriptor, ReloadSearchAnalyzersResponse, ReloadSearchAnalyzersRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Reloads an index's search analyzers and their resources.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-reload-analyzers.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ReloadSearchAnalyzersResponse ReloadSearchAnalyzers(Elastic.Clients.Elasticsearch.Indices indices, Action<ReloadSearchAnalyzersRequestDescriptor> configureRequest)
	{
		var descriptor = new ReloadSearchAnalyzersRequestDescriptor(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<ReloadSearchAnalyzersRequestDescriptor, ReloadSearchAnalyzersResponse, ReloadSearchAnalyzersRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Reloads an index's search analyzers and their resources.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-reload-analyzers.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ReloadSearchAnalyzersResponse> ReloadSearchAnalyzersAsync<TDocument>(ReloadSearchAnalyzersRequestDescriptor<TDocument> descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<ReloadSearchAnalyzersRequestDescriptor<TDocument>, ReloadSearchAnalyzersResponse, ReloadSearchAnalyzersRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Reloads an index's search analyzers and their resources.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-reload-analyzers.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ReloadSearchAnalyzersResponse> ReloadSearchAnalyzersAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices indices, CancellationToken cancellationToken = default)
	{
		var descriptor = new ReloadSearchAnalyzersRequestDescriptor<TDocument>(indices);
		descriptor.BeforeRequest();
		return DoRequestAsync<ReloadSearchAnalyzersRequestDescriptor<TDocument>, ReloadSearchAnalyzersResponse, ReloadSearchAnalyzersRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Reloads an index's search analyzers and their resources.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-reload-analyzers.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ReloadSearchAnalyzersResponse> ReloadSearchAnalyzersAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices indices, Action<ReloadSearchAnalyzersRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new ReloadSearchAnalyzersRequestDescriptor<TDocument>(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<ReloadSearchAnalyzersRequestDescriptor<TDocument>, ReloadSearchAnalyzersResponse, ReloadSearchAnalyzersRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Reloads an index's search analyzers and their resources.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-reload-analyzers.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ReloadSearchAnalyzersResponse> ReloadSearchAnalyzersAsync<TDocument>(CancellationToken cancellationToken = default)
	{
		var descriptor = new ReloadSearchAnalyzersRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequestAsync<ReloadSearchAnalyzersRequestDescriptor<TDocument>, ReloadSearchAnalyzersResponse, ReloadSearchAnalyzersRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Reloads an index's search analyzers and their resources.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-reload-analyzers.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ReloadSearchAnalyzersResponse> ReloadSearchAnalyzersAsync<TDocument>(Action<ReloadSearchAnalyzersRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new ReloadSearchAnalyzersRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<ReloadSearchAnalyzersRequestDescriptor<TDocument>, ReloadSearchAnalyzersResponse, ReloadSearchAnalyzersRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Reloads an index's search analyzers and their resources.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-reload-analyzers.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ReloadSearchAnalyzersResponse> ReloadSearchAnalyzersAsync(ReloadSearchAnalyzersRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<ReloadSearchAnalyzersRequestDescriptor, ReloadSearchAnalyzersResponse, ReloadSearchAnalyzersRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Reloads an index's search analyzers and their resources.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-reload-analyzers.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ReloadSearchAnalyzersResponse> ReloadSearchAnalyzersAsync(Elastic.Clients.Elasticsearch.Indices indices, CancellationToken cancellationToken = default)
	{
		var descriptor = new ReloadSearchAnalyzersRequestDescriptor(indices);
		descriptor.BeforeRequest();
		return DoRequestAsync<ReloadSearchAnalyzersRequestDescriptor, ReloadSearchAnalyzersResponse, ReloadSearchAnalyzersRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Reloads an index's search analyzers and their resources.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-reload-analyzers.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ReloadSearchAnalyzersResponse> ReloadSearchAnalyzersAsync(Elastic.Clients.Elasticsearch.Indices indices, Action<ReloadSearchAnalyzersRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new ReloadSearchAnalyzersRequestDescriptor(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<ReloadSearchAnalyzersRequestDescriptor, ReloadSearchAnalyzersResponse, ReloadSearchAnalyzersRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Resolves the specified index expressions to return information about each cluster, including
	/// the local cluster, if included.
	/// Multiple patterns and remote clusters are supported.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-resolve-cluster-api.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ResolveClusterResponse ResolveCluster(ResolveClusterRequest request)
	{
		request.BeforeRequest();
		return DoRequest<ResolveClusterRequest, ResolveClusterResponse, ResolveClusterRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Resolves the specified index expressions to return information about each cluster, including
	/// the local cluster, if included.
	/// Multiple patterns and remote clusters are supported.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-resolve-cluster-api.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ResolveClusterResponse> ResolveClusterAsync(ResolveClusterRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<ResolveClusterRequest, ResolveClusterResponse, ResolveClusterRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Resolves the specified index expressions to return information about each cluster, including
	/// the local cluster, if included.
	/// Multiple patterns and remote clusters are supported.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-resolve-cluster-api.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ResolveClusterResponse ResolveCluster(ResolveClusterRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<ResolveClusterRequestDescriptor, ResolveClusterResponse, ResolveClusterRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Resolves the specified index expressions to return information about each cluster, including
	/// the local cluster, if included.
	/// Multiple patterns and remote clusters are supported.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-resolve-cluster-api.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ResolveClusterResponse ResolveCluster(Elastic.Clients.Elasticsearch.Names name)
	{
		var descriptor = new ResolveClusterRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequest<ResolveClusterRequestDescriptor, ResolveClusterResponse, ResolveClusterRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Resolves the specified index expressions to return information about each cluster, including
	/// the local cluster, if included.
	/// Multiple patterns and remote clusters are supported.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-resolve-cluster-api.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ResolveClusterResponse ResolveCluster(Elastic.Clients.Elasticsearch.Names name, Action<ResolveClusterRequestDescriptor> configureRequest)
	{
		var descriptor = new ResolveClusterRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<ResolveClusterRequestDescriptor, ResolveClusterResponse, ResolveClusterRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Resolves the specified index expressions to return information about each cluster, including
	/// the local cluster, if included.
	/// Multiple patterns and remote clusters are supported.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-resolve-cluster-api.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ResolveClusterResponse> ResolveClusterAsync(ResolveClusterRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<ResolveClusterRequestDescriptor, ResolveClusterResponse, ResolveClusterRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Resolves the specified index expressions to return information about each cluster, including
	/// the local cluster, if included.
	/// Multiple patterns and remote clusters are supported.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-resolve-cluster-api.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ResolveClusterResponse> ResolveClusterAsync(Elastic.Clients.Elasticsearch.Names name, CancellationToken cancellationToken = default)
	{
		var descriptor = new ResolveClusterRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequestAsync<ResolveClusterRequestDescriptor, ResolveClusterResponse, ResolveClusterRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Resolves the specified index expressions to return information about each cluster, including
	/// the local cluster, if included.
	/// Multiple patterns and remote clusters are supported.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-resolve-cluster-api.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ResolveClusterResponse> ResolveClusterAsync(Elastic.Clients.Elasticsearch.Names name, Action<ResolveClusterRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new ResolveClusterRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<ResolveClusterRequestDescriptor, ResolveClusterResponse, ResolveClusterRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Resolves the specified name(s) and/or index patterns for indices, aliases, and data streams.
	/// Multiple patterns and remote clusters are supported.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-resolve-index-api.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ResolveIndexResponse ResolveIndex(ResolveIndexRequest request)
	{
		request.BeforeRequest();
		return DoRequest<ResolveIndexRequest, ResolveIndexResponse, ResolveIndexRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Resolves the specified name(s) and/or index patterns for indices, aliases, and data streams.
	/// Multiple patterns and remote clusters are supported.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-resolve-index-api.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ResolveIndexResponse> ResolveIndexAsync(ResolveIndexRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<ResolveIndexRequest, ResolveIndexResponse, ResolveIndexRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Resolves the specified name(s) and/or index patterns for indices, aliases, and data streams.
	/// Multiple patterns and remote clusters are supported.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-resolve-index-api.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ResolveIndexResponse ResolveIndex(ResolveIndexRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<ResolveIndexRequestDescriptor, ResolveIndexResponse, ResolveIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Resolves the specified name(s) and/or index patterns for indices, aliases, and data streams.
	/// Multiple patterns and remote clusters are supported.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-resolve-index-api.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ResolveIndexResponse ResolveIndex(Elastic.Clients.Elasticsearch.Names name)
	{
		var descriptor = new ResolveIndexRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequest<ResolveIndexRequestDescriptor, ResolveIndexResponse, ResolveIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Resolves the specified name(s) and/or index patterns for indices, aliases, and data streams.
	/// Multiple patterns and remote clusters are supported.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-resolve-index-api.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ResolveIndexResponse ResolveIndex(Elastic.Clients.Elasticsearch.Names name, Action<ResolveIndexRequestDescriptor> configureRequest)
	{
		var descriptor = new ResolveIndexRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<ResolveIndexRequestDescriptor, ResolveIndexResponse, ResolveIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Resolves the specified name(s) and/or index patterns for indices, aliases, and data streams.
	/// Multiple patterns and remote clusters are supported.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-resolve-index-api.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ResolveIndexResponse> ResolveIndexAsync(ResolveIndexRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<ResolveIndexRequestDescriptor, ResolveIndexResponse, ResolveIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Resolves the specified name(s) and/or index patterns for indices, aliases, and data streams.
	/// Multiple patterns and remote clusters are supported.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-resolve-index-api.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ResolveIndexResponse> ResolveIndexAsync(Elastic.Clients.Elasticsearch.Names name, CancellationToken cancellationToken = default)
	{
		var descriptor = new ResolveIndexRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequestAsync<ResolveIndexRequestDescriptor, ResolveIndexResponse, ResolveIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Resolves the specified name(s) and/or index patterns for indices, aliases, and data streams.
	/// Multiple patterns and remote clusters are supported.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-resolve-index-api.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ResolveIndexResponse> ResolveIndexAsync(Elastic.Clients.Elasticsearch.Names name, Action<ResolveIndexRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new ResolveIndexRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<ResolveIndexRequestDescriptor, ResolveIndexResponse, ResolveIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Roll over to a new index.
	/// Creates a new index for a data stream or index alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-rollover-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RolloverResponse Rollover(RolloverRequest request)
	{
		request.BeforeRequest();
		return DoRequest<RolloverRequest, RolloverResponse, RolloverRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Roll over to a new index.
	/// Creates a new index for a data stream or index alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-rollover-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RolloverResponse> RolloverAsync(RolloverRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<RolloverRequest, RolloverResponse, RolloverRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Roll over to a new index.
	/// Creates a new index for a data stream or index alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-rollover-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RolloverResponse Rollover<TDocument>(RolloverRequestDescriptor<TDocument> descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<RolloverRequestDescriptor<TDocument>, RolloverResponse, RolloverRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Roll over to a new index.
	/// Creates a new index for a data stream or index alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-rollover-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RolloverResponse Rollover<TDocument>(Elastic.Clients.Elasticsearch.IndexAlias alias, Elastic.Clients.Elasticsearch.IndexName? newIndex)
	{
		var descriptor = new RolloverRequestDescriptor<TDocument>(alias, newIndex);
		descriptor.BeforeRequest();
		return DoRequest<RolloverRequestDescriptor<TDocument>, RolloverResponse, RolloverRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Roll over to a new index.
	/// Creates a new index for a data stream or index alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-rollover-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RolloverResponse Rollover<TDocument>(Elastic.Clients.Elasticsearch.IndexAlias alias, Elastic.Clients.Elasticsearch.IndexName? newIndex, Action<RolloverRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new RolloverRequestDescriptor<TDocument>(alias, newIndex);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<RolloverRequestDescriptor<TDocument>, RolloverResponse, RolloverRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Roll over to a new index.
	/// Creates a new index for a data stream or index alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-rollover-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RolloverResponse Rollover<TDocument>(Elastic.Clients.Elasticsearch.IndexAlias alias)
	{
		var descriptor = new RolloverRequestDescriptor<TDocument>(alias);
		descriptor.BeforeRequest();
		return DoRequest<RolloverRequestDescriptor<TDocument>, RolloverResponse, RolloverRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Roll over to a new index.
	/// Creates a new index for a data stream or index alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-rollover-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RolloverResponse Rollover<TDocument>(Elastic.Clients.Elasticsearch.IndexAlias alias, Action<RolloverRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new RolloverRequestDescriptor<TDocument>(alias);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<RolloverRequestDescriptor<TDocument>, RolloverResponse, RolloverRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Roll over to a new index.
	/// Creates a new index for a data stream or index alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-rollover-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RolloverResponse Rollover(RolloverRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<RolloverRequestDescriptor, RolloverResponse, RolloverRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Roll over to a new index.
	/// Creates a new index for a data stream or index alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-rollover-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RolloverResponse Rollover(Elastic.Clients.Elasticsearch.IndexAlias alias, Elastic.Clients.Elasticsearch.IndexName? newIndex)
	{
		var descriptor = new RolloverRequestDescriptor(alias, newIndex);
		descriptor.BeforeRequest();
		return DoRequest<RolloverRequestDescriptor, RolloverResponse, RolloverRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Roll over to a new index.
	/// Creates a new index for a data stream or index alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-rollover-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RolloverResponse Rollover(Elastic.Clients.Elasticsearch.IndexAlias alias, Elastic.Clients.Elasticsearch.IndexName? newIndex, Action<RolloverRequestDescriptor> configureRequest)
	{
		var descriptor = new RolloverRequestDescriptor(alias, newIndex);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<RolloverRequestDescriptor, RolloverResponse, RolloverRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Roll over to a new index.
	/// Creates a new index for a data stream or index alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-rollover-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RolloverResponse Rollover(Elastic.Clients.Elasticsearch.IndexAlias alias)
	{
		var descriptor = new RolloverRequestDescriptor(alias);
		descriptor.BeforeRequest();
		return DoRequest<RolloverRequestDescriptor, RolloverResponse, RolloverRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Roll over to a new index.
	/// Creates a new index for a data stream or index alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-rollover-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RolloverResponse Rollover(Elastic.Clients.Elasticsearch.IndexAlias alias, Action<RolloverRequestDescriptor> configureRequest)
	{
		var descriptor = new RolloverRequestDescriptor(alias);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<RolloverRequestDescriptor, RolloverResponse, RolloverRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Roll over to a new index.
	/// Creates a new index for a data stream or index alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-rollover-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RolloverResponse> RolloverAsync<TDocument>(RolloverRequestDescriptor<TDocument> descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<RolloverRequestDescriptor<TDocument>, RolloverResponse, RolloverRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Roll over to a new index.
	/// Creates a new index for a data stream or index alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-rollover-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RolloverResponse> RolloverAsync<TDocument>(Elastic.Clients.Elasticsearch.IndexAlias alias, Elastic.Clients.Elasticsearch.IndexName? newIndex, CancellationToken cancellationToken = default)
	{
		var descriptor = new RolloverRequestDescriptor<TDocument>(alias, newIndex);
		descriptor.BeforeRequest();
		return DoRequestAsync<RolloverRequestDescriptor<TDocument>, RolloverResponse, RolloverRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Roll over to a new index.
	/// Creates a new index for a data stream or index alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-rollover-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RolloverResponse> RolloverAsync<TDocument>(Elastic.Clients.Elasticsearch.IndexAlias alias, Elastic.Clients.Elasticsearch.IndexName? newIndex, Action<RolloverRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new RolloverRequestDescriptor<TDocument>(alias, newIndex);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<RolloverRequestDescriptor<TDocument>, RolloverResponse, RolloverRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Roll over to a new index.
	/// Creates a new index for a data stream or index alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-rollover-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RolloverResponse> RolloverAsync<TDocument>(Elastic.Clients.Elasticsearch.IndexAlias alias, CancellationToken cancellationToken = default)
	{
		var descriptor = new RolloverRequestDescriptor<TDocument>(alias);
		descriptor.BeforeRequest();
		return DoRequestAsync<RolloverRequestDescriptor<TDocument>, RolloverResponse, RolloverRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Roll over to a new index.
	/// Creates a new index for a data stream or index alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-rollover-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RolloverResponse> RolloverAsync<TDocument>(Elastic.Clients.Elasticsearch.IndexAlias alias, Action<RolloverRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new RolloverRequestDescriptor<TDocument>(alias);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<RolloverRequestDescriptor<TDocument>, RolloverResponse, RolloverRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Roll over to a new index.
	/// Creates a new index for a data stream or index alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-rollover-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RolloverResponse> RolloverAsync(RolloverRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<RolloverRequestDescriptor, RolloverResponse, RolloverRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Roll over to a new index.
	/// Creates a new index for a data stream or index alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-rollover-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RolloverResponse> RolloverAsync(Elastic.Clients.Elasticsearch.IndexAlias alias, Elastic.Clients.Elasticsearch.IndexName? newIndex, CancellationToken cancellationToken = default)
	{
		var descriptor = new RolloverRequestDescriptor(alias, newIndex);
		descriptor.BeforeRequest();
		return DoRequestAsync<RolloverRequestDescriptor, RolloverResponse, RolloverRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Roll over to a new index.
	/// Creates a new index for a data stream or index alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-rollover-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RolloverResponse> RolloverAsync(Elastic.Clients.Elasticsearch.IndexAlias alias, Elastic.Clients.Elasticsearch.IndexName? newIndex, Action<RolloverRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new RolloverRequestDescriptor(alias, newIndex);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<RolloverRequestDescriptor, RolloverResponse, RolloverRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Roll over to a new index.
	/// Creates a new index for a data stream or index alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-rollover-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RolloverResponse> RolloverAsync(Elastic.Clients.Elasticsearch.IndexAlias alias, CancellationToken cancellationToken = default)
	{
		var descriptor = new RolloverRequestDescriptor(alias);
		descriptor.BeforeRequest();
		return DoRequestAsync<RolloverRequestDescriptor, RolloverResponse, RolloverRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Roll over to a new index.
	/// Creates a new index for a data stream or index alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-rollover-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RolloverResponse> RolloverAsync(Elastic.Clients.Elasticsearch.IndexAlias alias, Action<RolloverRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new RolloverRequestDescriptor(alias);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<RolloverRequestDescriptor, RolloverResponse, RolloverRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Returns low-level information about the Lucene segments in index shards.
	/// For data streams, the API returns information about the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-segments.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual SegmentsResponse Segments(SegmentsRequest request)
	{
		request.BeforeRequest();
		return DoRequest<SegmentsRequest, SegmentsResponse, SegmentsRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Returns low-level information about the Lucene segments in index shards.
	/// For data streams, the API returns information about the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-segments.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<SegmentsResponse> SegmentsAsync(SegmentsRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<SegmentsRequest, SegmentsResponse, SegmentsRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Returns low-level information about the Lucene segments in index shards.
	/// For data streams, the API returns information about the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-segments.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual SegmentsResponse Segments<TDocument>(SegmentsRequestDescriptor<TDocument> descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<SegmentsRequestDescriptor<TDocument>, SegmentsResponse, SegmentsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Returns low-level information about the Lucene segments in index shards.
	/// For data streams, the API returns information about the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-segments.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual SegmentsResponse Segments<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices)
	{
		var descriptor = new SegmentsRequestDescriptor<TDocument>(indices);
		descriptor.BeforeRequest();
		return DoRequest<SegmentsRequestDescriptor<TDocument>, SegmentsResponse, SegmentsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Returns low-level information about the Lucene segments in index shards.
	/// For data streams, the API returns information about the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-segments.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual SegmentsResponse Segments<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices, Action<SegmentsRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new SegmentsRequestDescriptor<TDocument>(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<SegmentsRequestDescriptor<TDocument>, SegmentsResponse, SegmentsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Returns low-level information about the Lucene segments in index shards.
	/// For data streams, the API returns information about the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-segments.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual SegmentsResponse Segments<TDocument>()
	{
		var descriptor = new SegmentsRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequest<SegmentsRequestDescriptor<TDocument>, SegmentsResponse, SegmentsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Returns low-level information about the Lucene segments in index shards.
	/// For data streams, the API returns information about the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-segments.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual SegmentsResponse Segments<TDocument>(Action<SegmentsRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new SegmentsRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<SegmentsRequestDescriptor<TDocument>, SegmentsResponse, SegmentsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Returns low-level information about the Lucene segments in index shards.
	/// For data streams, the API returns information about the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-segments.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual SegmentsResponse Segments(SegmentsRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<SegmentsRequestDescriptor, SegmentsResponse, SegmentsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Returns low-level information about the Lucene segments in index shards.
	/// For data streams, the API returns information about the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-segments.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual SegmentsResponse Segments(Elastic.Clients.Elasticsearch.Indices? indices)
	{
		var descriptor = new SegmentsRequestDescriptor(indices);
		descriptor.BeforeRequest();
		return DoRequest<SegmentsRequestDescriptor, SegmentsResponse, SegmentsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Returns low-level information about the Lucene segments in index shards.
	/// For data streams, the API returns information about the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-segments.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual SegmentsResponse Segments(Elastic.Clients.Elasticsearch.Indices? indices, Action<SegmentsRequestDescriptor> configureRequest)
	{
		var descriptor = new SegmentsRequestDescriptor(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<SegmentsRequestDescriptor, SegmentsResponse, SegmentsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Returns low-level information about the Lucene segments in index shards.
	/// For data streams, the API returns information about the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-segments.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual SegmentsResponse Segments()
	{
		var descriptor = new SegmentsRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequest<SegmentsRequestDescriptor, SegmentsResponse, SegmentsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Returns low-level information about the Lucene segments in index shards.
	/// For data streams, the API returns information about the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-segments.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual SegmentsResponse Segments(Action<SegmentsRequestDescriptor> configureRequest)
	{
		var descriptor = new SegmentsRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<SegmentsRequestDescriptor, SegmentsResponse, SegmentsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Returns low-level information about the Lucene segments in index shards.
	/// For data streams, the API returns information about the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-segments.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<SegmentsResponse> SegmentsAsync<TDocument>(SegmentsRequestDescriptor<TDocument> descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<SegmentsRequestDescriptor<TDocument>, SegmentsResponse, SegmentsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Returns low-level information about the Lucene segments in index shards.
	/// For data streams, the API returns information about the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-segments.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<SegmentsResponse> SegmentsAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices, CancellationToken cancellationToken = default)
	{
		var descriptor = new SegmentsRequestDescriptor<TDocument>(indices);
		descriptor.BeforeRequest();
		return DoRequestAsync<SegmentsRequestDescriptor<TDocument>, SegmentsResponse, SegmentsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Returns low-level information about the Lucene segments in index shards.
	/// For data streams, the API returns information about the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-segments.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<SegmentsResponse> SegmentsAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices, Action<SegmentsRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new SegmentsRequestDescriptor<TDocument>(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<SegmentsRequestDescriptor<TDocument>, SegmentsResponse, SegmentsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Returns low-level information about the Lucene segments in index shards.
	/// For data streams, the API returns information about the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-segments.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<SegmentsResponse> SegmentsAsync<TDocument>(CancellationToken cancellationToken = default)
	{
		var descriptor = new SegmentsRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequestAsync<SegmentsRequestDescriptor<TDocument>, SegmentsResponse, SegmentsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Returns low-level information about the Lucene segments in index shards.
	/// For data streams, the API returns information about the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-segments.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<SegmentsResponse> SegmentsAsync<TDocument>(Action<SegmentsRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new SegmentsRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<SegmentsRequestDescriptor<TDocument>, SegmentsResponse, SegmentsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Returns low-level information about the Lucene segments in index shards.
	/// For data streams, the API returns information about the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-segments.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<SegmentsResponse> SegmentsAsync(SegmentsRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<SegmentsRequestDescriptor, SegmentsResponse, SegmentsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Returns low-level information about the Lucene segments in index shards.
	/// For data streams, the API returns information about the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-segments.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<SegmentsResponse> SegmentsAsync(Elastic.Clients.Elasticsearch.Indices? indices, CancellationToken cancellationToken = default)
	{
		var descriptor = new SegmentsRequestDescriptor(indices);
		descriptor.BeforeRequest();
		return DoRequestAsync<SegmentsRequestDescriptor, SegmentsResponse, SegmentsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Returns low-level information about the Lucene segments in index shards.
	/// For data streams, the API returns information about the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-segments.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<SegmentsResponse> SegmentsAsync(Elastic.Clients.Elasticsearch.Indices? indices, Action<SegmentsRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new SegmentsRequestDescriptor(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<SegmentsRequestDescriptor, SegmentsResponse, SegmentsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Returns low-level information about the Lucene segments in index shards.
	/// For data streams, the API returns information about the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-segments.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<SegmentsResponse> SegmentsAsync(CancellationToken cancellationToken = default)
	{
		var descriptor = new SegmentsRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequestAsync<SegmentsRequestDescriptor, SegmentsResponse, SegmentsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Returns low-level information about the Lucene segments in index shards.
	/// For data streams, the API returns information about the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-segments.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<SegmentsResponse> SegmentsAsync(Action<SegmentsRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new SegmentsRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<SegmentsRequestDescriptor, SegmentsResponse, SegmentsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Retrieves store information about replica shards in one or more indices.
	/// For data streams, the API retrieves store information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-shards-stores.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ShardStoresResponse ShardStores(ShardStoresRequest request)
	{
		request.BeforeRequest();
		return DoRequest<ShardStoresRequest, ShardStoresResponse, ShardStoresRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Retrieves store information about replica shards in one or more indices.
	/// For data streams, the API retrieves store information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-shards-stores.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ShardStoresResponse> ShardStoresAsync(ShardStoresRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<ShardStoresRequest, ShardStoresResponse, ShardStoresRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Retrieves store information about replica shards in one or more indices.
	/// For data streams, the API retrieves store information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-shards-stores.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ShardStoresResponse ShardStores<TDocument>(ShardStoresRequestDescriptor<TDocument> descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<ShardStoresRequestDescriptor<TDocument>, ShardStoresResponse, ShardStoresRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Retrieves store information about replica shards in one or more indices.
	/// For data streams, the API retrieves store information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-shards-stores.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ShardStoresResponse ShardStores<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices)
	{
		var descriptor = new ShardStoresRequestDescriptor<TDocument>(indices);
		descriptor.BeforeRequest();
		return DoRequest<ShardStoresRequestDescriptor<TDocument>, ShardStoresResponse, ShardStoresRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Retrieves store information about replica shards in one or more indices.
	/// For data streams, the API retrieves store information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-shards-stores.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ShardStoresResponse ShardStores<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices, Action<ShardStoresRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new ShardStoresRequestDescriptor<TDocument>(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<ShardStoresRequestDescriptor<TDocument>, ShardStoresResponse, ShardStoresRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Retrieves store information about replica shards in one or more indices.
	/// For data streams, the API retrieves store information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-shards-stores.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ShardStoresResponse ShardStores<TDocument>()
	{
		var descriptor = new ShardStoresRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequest<ShardStoresRequestDescriptor<TDocument>, ShardStoresResponse, ShardStoresRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Retrieves store information about replica shards in one or more indices.
	/// For data streams, the API retrieves store information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-shards-stores.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ShardStoresResponse ShardStores<TDocument>(Action<ShardStoresRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new ShardStoresRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<ShardStoresRequestDescriptor<TDocument>, ShardStoresResponse, ShardStoresRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Retrieves store information about replica shards in one or more indices.
	/// For data streams, the API retrieves store information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-shards-stores.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ShardStoresResponse ShardStores(ShardStoresRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<ShardStoresRequestDescriptor, ShardStoresResponse, ShardStoresRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Retrieves store information about replica shards in one or more indices.
	/// For data streams, the API retrieves store information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-shards-stores.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ShardStoresResponse ShardStores(Elastic.Clients.Elasticsearch.Indices? indices)
	{
		var descriptor = new ShardStoresRequestDescriptor(indices);
		descriptor.BeforeRequest();
		return DoRequest<ShardStoresRequestDescriptor, ShardStoresResponse, ShardStoresRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Retrieves store information about replica shards in one or more indices.
	/// For data streams, the API retrieves store information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-shards-stores.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ShardStoresResponse ShardStores(Elastic.Clients.Elasticsearch.Indices? indices, Action<ShardStoresRequestDescriptor> configureRequest)
	{
		var descriptor = new ShardStoresRequestDescriptor(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<ShardStoresRequestDescriptor, ShardStoresResponse, ShardStoresRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Retrieves store information about replica shards in one or more indices.
	/// For data streams, the API retrieves store information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-shards-stores.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ShardStoresResponse ShardStores()
	{
		var descriptor = new ShardStoresRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequest<ShardStoresRequestDescriptor, ShardStoresResponse, ShardStoresRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Retrieves store information about replica shards in one or more indices.
	/// For data streams, the API retrieves store information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-shards-stores.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ShardStoresResponse ShardStores(Action<ShardStoresRequestDescriptor> configureRequest)
	{
		var descriptor = new ShardStoresRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<ShardStoresRequestDescriptor, ShardStoresResponse, ShardStoresRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Retrieves store information about replica shards in one or more indices.
	/// For data streams, the API retrieves store information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-shards-stores.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ShardStoresResponse> ShardStoresAsync<TDocument>(ShardStoresRequestDescriptor<TDocument> descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<ShardStoresRequestDescriptor<TDocument>, ShardStoresResponse, ShardStoresRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Retrieves store information about replica shards in one or more indices.
	/// For data streams, the API retrieves store information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-shards-stores.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ShardStoresResponse> ShardStoresAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices, CancellationToken cancellationToken = default)
	{
		var descriptor = new ShardStoresRequestDescriptor<TDocument>(indices);
		descriptor.BeforeRequest();
		return DoRequestAsync<ShardStoresRequestDescriptor<TDocument>, ShardStoresResponse, ShardStoresRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Retrieves store information about replica shards in one or more indices.
	/// For data streams, the API retrieves store information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-shards-stores.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ShardStoresResponse> ShardStoresAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices, Action<ShardStoresRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new ShardStoresRequestDescriptor<TDocument>(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<ShardStoresRequestDescriptor<TDocument>, ShardStoresResponse, ShardStoresRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Retrieves store information about replica shards in one or more indices.
	/// For data streams, the API retrieves store information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-shards-stores.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ShardStoresResponse> ShardStoresAsync<TDocument>(CancellationToken cancellationToken = default)
	{
		var descriptor = new ShardStoresRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequestAsync<ShardStoresRequestDescriptor<TDocument>, ShardStoresResponse, ShardStoresRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Retrieves store information about replica shards in one or more indices.
	/// For data streams, the API retrieves store information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-shards-stores.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ShardStoresResponse> ShardStoresAsync<TDocument>(Action<ShardStoresRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new ShardStoresRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<ShardStoresRequestDescriptor<TDocument>, ShardStoresResponse, ShardStoresRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Retrieves store information about replica shards in one or more indices.
	/// For data streams, the API retrieves store information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-shards-stores.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ShardStoresResponse> ShardStoresAsync(ShardStoresRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<ShardStoresRequestDescriptor, ShardStoresResponse, ShardStoresRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Retrieves store information about replica shards in one or more indices.
	/// For data streams, the API retrieves store information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-shards-stores.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ShardStoresResponse> ShardStoresAsync(Elastic.Clients.Elasticsearch.Indices? indices, CancellationToken cancellationToken = default)
	{
		var descriptor = new ShardStoresRequestDescriptor(indices);
		descriptor.BeforeRequest();
		return DoRequestAsync<ShardStoresRequestDescriptor, ShardStoresResponse, ShardStoresRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Retrieves store information about replica shards in one or more indices.
	/// For data streams, the API retrieves store information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-shards-stores.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ShardStoresResponse> ShardStoresAsync(Elastic.Clients.Elasticsearch.Indices? indices, Action<ShardStoresRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new ShardStoresRequestDescriptor(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<ShardStoresRequestDescriptor, ShardStoresResponse, ShardStoresRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Retrieves store information about replica shards in one or more indices.
	/// For data streams, the API retrieves store information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-shards-stores.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ShardStoresResponse> ShardStoresAsync(CancellationToken cancellationToken = default)
	{
		var descriptor = new ShardStoresRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequestAsync<ShardStoresRequestDescriptor, ShardStoresResponse, ShardStoresRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Retrieves store information about replica shards in one or more indices.
	/// For data streams, the API retrieves store information for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-shards-stores.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ShardStoresResponse> ShardStoresAsync(Action<ShardStoresRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new ShardStoresRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<ShardStoresRequestDescriptor, ShardStoresResponse, ShardStoresRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Shrinks an existing index into a new index with fewer primary shards.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-shrink-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ShrinkIndexResponse Shrink(ShrinkIndexRequest request)
	{
		request.BeforeRequest();
		return DoRequest<ShrinkIndexRequest, ShrinkIndexResponse, ShrinkIndexRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Shrinks an existing index into a new index with fewer primary shards.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-shrink-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ShrinkIndexResponse> ShrinkAsync(ShrinkIndexRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<ShrinkIndexRequest, ShrinkIndexResponse, ShrinkIndexRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Shrinks an existing index into a new index with fewer primary shards.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-shrink-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ShrinkIndexResponse Shrink<TDocument>(ShrinkIndexRequestDescriptor<TDocument> descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<ShrinkIndexRequestDescriptor<TDocument>, ShrinkIndexResponse, ShrinkIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Shrinks an existing index into a new index with fewer primary shards.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-shrink-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ShrinkIndexResponse Shrink<TDocument>(Elastic.Clients.Elasticsearch.IndexName index, Elastic.Clients.Elasticsearch.IndexName target)
	{
		var descriptor = new ShrinkIndexRequestDescriptor<TDocument>(index, target);
		descriptor.BeforeRequest();
		return DoRequest<ShrinkIndexRequestDescriptor<TDocument>, ShrinkIndexResponse, ShrinkIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Shrinks an existing index into a new index with fewer primary shards.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-shrink-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ShrinkIndexResponse Shrink<TDocument>(Elastic.Clients.Elasticsearch.IndexName index, Elastic.Clients.Elasticsearch.IndexName target, Action<ShrinkIndexRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new ShrinkIndexRequestDescriptor<TDocument>(index, target);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<ShrinkIndexRequestDescriptor<TDocument>, ShrinkIndexResponse, ShrinkIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Shrinks an existing index into a new index with fewer primary shards.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-shrink-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ShrinkIndexResponse Shrink(ShrinkIndexRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<ShrinkIndexRequestDescriptor, ShrinkIndexResponse, ShrinkIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Shrinks an existing index into a new index with fewer primary shards.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-shrink-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ShrinkIndexResponse Shrink(Elastic.Clients.Elasticsearch.IndexName index, Elastic.Clients.Elasticsearch.IndexName target)
	{
		var descriptor = new ShrinkIndexRequestDescriptor(index, target);
		descriptor.BeforeRequest();
		return DoRequest<ShrinkIndexRequestDescriptor, ShrinkIndexResponse, ShrinkIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Shrinks an existing index into a new index with fewer primary shards.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-shrink-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ShrinkIndexResponse Shrink(Elastic.Clients.Elasticsearch.IndexName index, Elastic.Clients.Elasticsearch.IndexName target, Action<ShrinkIndexRequestDescriptor> configureRequest)
	{
		var descriptor = new ShrinkIndexRequestDescriptor(index, target);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<ShrinkIndexRequestDescriptor, ShrinkIndexResponse, ShrinkIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Shrinks an existing index into a new index with fewer primary shards.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-shrink-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ShrinkIndexResponse> ShrinkAsync<TDocument>(ShrinkIndexRequestDescriptor<TDocument> descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<ShrinkIndexRequestDescriptor<TDocument>, ShrinkIndexResponse, ShrinkIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Shrinks an existing index into a new index with fewer primary shards.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-shrink-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ShrinkIndexResponse> ShrinkAsync<TDocument>(Elastic.Clients.Elasticsearch.IndexName index, Elastic.Clients.Elasticsearch.IndexName target, CancellationToken cancellationToken = default)
	{
		var descriptor = new ShrinkIndexRequestDescriptor<TDocument>(index, target);
		descriptor.BeforeRequest();
		return DoRequestAsync<ShrinkIndexRequestDescriptor<TDocument>, ShrinkIndexResponse, ShrinkIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Shrinks an existing index into a new index with fewer primary shards.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-shrink-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ShrinkIndexResponse> ShrinkAsync<TDocument>(Elastic.Clients.Elasticsearch.IndexName index, Elastic.Clients.Elasticsearch.IndexName target, Action<ShrinkIndexRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new ShrinkIndexRequestDescriptor<TDocument>(index, target);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<ShrinkIndexRequestDescriptor<TDocument>, ShrinkIndexResponse, ShrinkIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Shrinks an existing index into a new index with fewer primary shards.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-shrink-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ShrinkIndexResponse> ShrinkAsync(ShrinkIndexRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<ShrinkIndexRequestDescriptor, ShrinkIndexResponse, ShrinkIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Shrinks an existing index into a new index with fewer primary shards.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-shrink-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ShrinkIndexResponse> ShrinkAsync(Elastic.Clients.Elasticsearch.IndexName index, Elastic.Clients.Elasticsearch.IndexName target, CancellationToken cancellationToken = default)
	{
		var descriptor = new ShrinkIndexRequestDescriptor(index, target);
		descriptor.BeforeRequest();
		return DoRequestAsync<ShrinkIndexRequestDescriptor, ShrinkIndexResponse, ShrinkIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Shrinks an existing index into a new index with fewer primary shards.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-shrink-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ShrinkIndexResponse> ShrinkAsync(Elastic.Clients.Elasticsearch.IndexName index, Elastic.Clients.Elasticsearch.IndexName target, Action<ShrinkIndexRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new ShrinkIndexRequestDescriptor(index, target);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<ShrinkIndexRequestDescriptor, ShrinkIndexResponse, ShrinkIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Simulate an index.
	/// Returns the index configuration that would be applied to the specified index from an existing index template.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-simulate-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual SimulateIndexTemplateResponse SimulateIndexTemplate(SimulateIndexTemplateRequest request)
	{
		request.BeforeRequest();
		return DoRequest<SimulateIndexTemplateRequest, SimulateIndexTemplateResponse, SimulateIndexTemplateRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Simulate an index.
	/// Returns the index configuration that would be applied to the specified index from an existing index template.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-simulate-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<SimulateIndexTemplateResponse> SimulateIndexTemplateAsync(SimulateIndexTemplateRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<SimulateIndexTemplateRequest, SimulateIndexTemplateResponse, SimulateIndexTemplateRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Simulate an index.
	/// Returns the index configuration that would be applied to the specified index from an existing index template.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-simulate-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual SimulateIndexTemplateResponse SimulateIndexTemplate(SimulateIndexTemplateRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<SimulateIndexTemplateRequestDescriptor, SimulateIndexTemplateResponse, SimulateIndexTemplateRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Simulate an index.
	/// Returns the index configuration that would be applied to the specified index from an existing index template.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-simulate-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual SimulateIndexTemplateResponse SimulateIndexTemplate(Elastic.Clients.Elasticsearch.Name name)
	{
		var descriptor = new SimulateIndexTemplateRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequest<SimulateIndexTemplateRequestDescriptor, SimulateIndexTemplateResponse, SimulateIndexTemplateRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Simulate an index.
	/// Returns the index configuration that would be applied to the specified index from an existing index template.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-simulate-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual SimulateIndexTemplateResponse SimulateIndexTemplate(Elastic.Clients.Elasticsearch.Name name, Action<SimulateIndexTemplateRequestDescriptor> configureRequest)
	{
		var descriptor = new SimulateIndexTemplateRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<SimulateIndexTemplateRequestDescriptor, SimulateIndexTemplateResponse, SimulateIndexTemplateRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Simulate an index.
	/// Returns the index configuration that would be applied to the specified index from an existing index template.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-simulate-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<SimulateIndexTemplateResponse> SimulateIndexTemplateAsync(SimulateIndexTemplateRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<SimulateIndexTemplateRequestDescriptor, SimulateIndexTemplateResponse, SimulateIndexTemplateRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Simulate an index.
	/// Returns the index configuration that would be applied to the specified index from an existing index template.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-simulate-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<SimulateIndexTemplateResponse> SimulateIndexTemplateAsync(Elastic.Clients.Elasticsearch.Name name, CancellationToken cancellationToken = default)
	{
		var descriptor = new SimulateIndexTemplateRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequestAsync<SimulateIndexTemplateRequestDescriptor, SimulateIndexTemplateResponse, SimulateIndexTemplateRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Simulate an index.
	/// Returns the index configuration that would be applied to the specified index from an existing index template.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-simulate-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<SimulateIndexTemplateResponse> SimulateIndexTemplateAsync(Elastic.Clients.Elasticsearch.Name name, Action<SimulateIndexTemplateRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new SimulateIndexTemplateRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<SimulateIndexTemplateRequestDescriptor, SimulateIndexTemplateResponse, SimulateIndexTemplateRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Simulate an index template.
	/// Returns the index configuration that would be applied by a particular index template.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-simulate-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual SimulateTemplateResponse SimulateTemplate(SimulateTemplateRequest request)
	{
		request.BeforeRequest();
		return DoRequest<SimulateTemplateRequest, SimulateTemplateResponse, SimulateTemplateRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Simulate an index template.
	/// Returns the index configuration that would be applied by a particular index template.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-simulate-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<SimulateTemplateResponse> SimulateTemplateAsync(SimulateTemplateRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<SimulateTemplateRequest, SimulateTemplateResponse, SimulateTemplateRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Simulate an index template.
	/// Returns the index configuration that would be applied by a particular index template.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-simulate-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual SimulateTemplateResponse SimulateTemplate<TDocument>(SimulateTemplateRequestDescriptor<TDocument> descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<SimulateTemplateRequestDescriptor<TDocument>, SimulateTemplateResponse, SimulateTemplateRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Simulate an index template.
	/// Returns the index configuration that would be applied by a particular index template.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-simulate-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual SimulateTemplateResponse SimulateTemplate<TDocument>(Elastic.Clients.Elasticsearch.Name? name)
	{
		var descriptor = new SimulateTemplateRequestDescriptor<TDocument>(name);
		descriptor.BeforeRequest();
		return DoRequest<SimulateTemplateRequestDescriptor<TDocument>, SimulateTemplateResponse, SimulateTemplateRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Simulate an index template.
	/// Returns the index configuration that would be applied by a particular index template.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-simulate-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual SimulateTemplateResponse SimulateTemplate<TDocument>(Elastic.Clients.Elasticsearch.Name? name, Action<SimulateTemplateRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new SimulateTemplateRequestDescriptor<TDocument>(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<SimulateTemplateRequestDescriptor<TDocument>, SimulateTemplateResponse, SimulateTemplateRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Simulate an index template.
	/// Returns the index configuration that would be applied by a particular index template.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-simulate-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual SimulateTemplateResponse SimulateTemplate<TDocument>()
	{
		var descriptor = new SimulateTemplateRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequest<SimulateTemplateRequestDescriptor<TDocument>, SimulateTemplateResponse, SimulateTemplateRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Simulate an index template.
	/// Returns the index configuration that would be applied by a particular index template.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-simulate-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual SimulateTemplateResponse SimulateTemplate<TDocument>(Action<SimulateTemplateRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new SimulateTemplateRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<SimulateTemplateRequestDescriptor<TDocument>, SimulateTemplateResponse, SimulateTemplateRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Simulate an index template.
	/// Returns the index configuration that would be applied by a particular index template.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-simulate-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual SimulateTemplateResponse SimulateTemplate(SimulateTemplateRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<SimulateTemplateRequestDescriptor, SimulateTemplateResponse, SimulateTemplateRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Simulate an index template.
	/// Returns the index configuration that would be applied by a particular index template.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-simulate-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual SimulateTemplateResponse SimulateTemplate(Elastic.Clients.Elasticsearch.Name? name)
	{
		var descriptor = new SimulateTemplateRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequest<SimulateTemplateRequestDescriptor, SimulateTemplateResponse, SimulateTemplateRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Simulate an index template.
	/// Returns the index configuration that would be applied by a particular index template.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-simulate-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual SimulateTemplateResponse SimulateTemplate(Elastic.Clients.Elasticsearch.Name? name, Action<SimulateTemplateRequestDescriptor> configureRequest)
	{
		var descriptor = new SimulateTemplateRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<SimulateTemplateRequestDescriptor, SimulateTemplateResponse, SimulateTemplateRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Simulate an index template.
	/// Returns the index configuration that would be applied by a particular index template.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-simulate-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual SimulateTemplateResponse SimulateTemplate()
	{
		var descriptor = new SimulateTemplateRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequest<SimulateTemplateRequestDescriptor, SimulateTemplateResponse, SimulateTemplateRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Simulate an index template.
	/// Returns the index configuration that would be applied by a particular index template.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-simulate-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual SimulateTemplateResponse SimulateTemplate(Action<SimulateTemplateRequestDescriptor> configureRequest)
	{
		var descriptor = new SimulateTemplateRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<SimulateTemplateRequestDescriptor, SimulateTemplateResponse, SimulateTemplateRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Simulate an index template.
	/// Returns the index configuration that would be applied by a particular index template.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-simulate-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<SimulateTemplateResponse> SimulateTemplateAsync<TDocument>(SimulateTemplateRequestDescriptor<TDocument> descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<SimulateTemplateRequestDescriptor<TDocument>, SimulateTemplateResponse, SimulateTemplateRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Simulate an index template.
	/// Returns the index configuration that would be applied by a particular index template.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-simulate-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<SimulateTemplateResponse> SimulateTemplateAsync<TDocument>(Elastic.Clients.Elasticsearch.Name? name, CancellationToken cancellationToken = default)
	{
		var descriptor = new SimulateTemplateRequestDescriptor<TDocument>(name);
		descriptor.BeforeRequest();
		return DoRequestAsync<SimulateTemplateRequestDescriptor<TDocument>, SimulateTemplateResponse, SimulateTemplateRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Simulate an index template.
	/// Returns the index configuration that would be applied by a particular index template.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-simulate-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<SimulateTemplateResponse> SimulateTemplateAsync<TDocument>(Elastic.Clients.Elasticsearch.Name? name, Action<SimulateTemplateRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new SimulateTemplateRequestDescriptor<TDocument>(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<SimulateTemplateRequestDescriptor<TDocument>, SimulateTemplateResponse, SimulateTemplateRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Simulate an index template.
	/// Returns the index configuration that would be applied by a particular index template.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-simulate-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<SimulateTemplateResponse> SimulateTemplateAsync<TDocument>(CancellationToken cancellationToken = default)
	{
		var descriptor = new SimulateTemplateRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequestAsync<SimulateTemplateRequestDescriptor<TDocument>, SimulateTemplateResponse, SimulateTemplateRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Simulate an index template.
	/// Returns the index configuration that would be applied by a particular index template.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-simulate-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<SimulateTemplateResponse> SimulateTemplateAsync<TDocument>(Action<SimulateTemplateRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new SimulateTemplateRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<SimulateTemplateRequestDescriptor<TDocument>, SimulateTemplateResponse, SimulateTemplateRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Simulate an index template.
	/// Returns the index configuration that would be applied by a particular index template.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-simulate-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<SimulateTemplateResponse> SimulateTemplateAsync(SimulateTemplateRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<SimulateTemplateRequestDescriptor, SimulateTemplateResponse, SimulateTemplateRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Simulate an index template.
	/// Returns the index configuration that would be applied by a particular index template.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-simulate-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<SimulateTemplateResponse> SimulateTemplateAsync(Elastic.Clients.Elasticsearch.Name? name, CancellationToken cancellationToken = default)
	{
		var descriptor = new SimulateTemplateRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequestAsync<SimulateTemplateRequestDescriptor, SimulateTemplateResponse, SimulateTemplateRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Simulate an index template.
	/// Returns the index configuration that would be applied by a particular index template.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-simulate-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<SimulateTemplateResponse> SimulateTemplateAsync(Elastic.Clients.Elasticsearch.Name? name, Action<SimulateTemplateRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new SimulateTemplateRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<SimulateTemplateRequestDescriptor, SimulateTemplateResponse, SimulateTemplateRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Simulate an index template.
	/// Returns the index configuration that would be applied by a particular index template.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-simulate-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<SimulateTemplateResponse> SimulateTemplateAsync(CancellationToken cancellationToken = default)
	{
		var descriptor = new SimulateTemplateRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequestAsync<SimulateTemplateRequestDescriptor, SimulateTemplateResponse, SimulateTemplateRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Simulate an index template.
	/// Returns the index configuration that would be applied by a particular index template.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-simulate-template.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<SimulateTemplateResponse> SimulateTemplateAsync(Action<SimulateTemplateRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new SimulateTemplateRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<SimulateTemplateRequestDescriptor, SimulateTemplateResponse, SimulateTemplateRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Splits an existing index into a new index with more primary shards.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-split-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual SplitIndexResponse Split(SplitIndexRequest request)
	{
		request.BeforeRequest();
		return DoRequest<SplitIndexRequest, SplitIndexResponse, SplitIndexRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Splits an existing index into a new index with more primary shards.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-split-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<SplitIndexResponse> SplitAsync(SplitIndexRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<SplitIndexRequest, SplitIndexResponse, SplitIndexRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Splits an existing index into a new index with more primary shards.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-split-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual SplitIndexResponse Split<TDocument>(SplitIndexRequestDescriptor<TDocument> descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<SplitIndexRequestDescriptor<TDocument>, SplitIndexResponse, SplitIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Splits an existing index into a new index with more primary shards.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-split-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual SplitIndexResponse Split<TDocument>(Elastic.Clients.Elasticsearch.IndexName index, Elastic.Clients.Elasticsearch.IndexName target)
	{
		var descriptor = new SplitIndexRequestDescriptor<TDocument>(index, target);
		descriptor.BeforeRequest();
		return DoRequest<SplitIndexRequestDescriptor<TDocument>, SplitIndexResponse, SplitIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Splits an existing index into a new index with more primary shards.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-split-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual SplitIndexResponse Split<TDocument>(Elastic.Clients.Elasticsearch.IndexName index, Elastic.Clients.Elasticsearch.IndexName target, Action<SplitIndexRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new SplitIndexRequestDescriptor<TDocument>(index, target);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<SplitIndexRequestDescriptor<TDocument>, SplitIndexResponse, SplitIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Splits an existing index into a new index with more primary shards.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-split-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual SplitIndexResponse Split(SplitIndexRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<SplitIndexRequestDescriptor, SplitIndexResponse, SplitIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Splits an existing index into a new index with more primary shards.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-split-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual SplitIndexResponse Split(Elastic.Clients.Elasticsearch.IndexName index, Elastic.Clients.Elasticsearch.IndexName target)
	{
		var descriptor = new SplitIndexRequestDescriptor(index, target);
		descriptor.BeforeRequest();
		return DoRequest<SplitIndexRequestDescriptor, SplitIndexResponse, SplitIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Splits an existing index into a new index with more primary shards.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-split-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual SplitIndexResponse Split(Elastic.Clients.Elasticsearch.IndexName index, Elastic.Clients.Elasticsearch.IndexName target, Action<SplitIndexRequestDescriptor> configureRequest)
	{
		var descriptor = new SplitIndexRequestDescriptor(index, target);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<SplitIndexRequestDescriptor, SplitIndexResponse, SplitIndexRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Splits an existing index into a new index with more primary shards.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-split-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<SplitIndexResponse> SplitAsync<TDocument>(SplitIndexRequestDescriptor<TDocument> descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<SplitIndexRequestDescriptor<TDocument>, SplitIndexResponse, SplitIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Splits an existing index into a new index with more primary shards.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-split-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<SplitIndexResponse> SplitAsync<TDocument>(Elastic.Clients.Elasticsearch.IndexName index, Elastic.Clients.Elasticsearch.IndexName target, CancellationToken cancellationToken = default)
	{
		var descriptor = new SplitIndexRequestDescriptor<TDocument>(index, target);
		descriptor.BeforeRequest();
		return DoRequestAsync<SplitIndexRequestDescriptor<TDocument>, SplitIndexResponse, SplitIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Splits an existing index into a new index with more primary shards.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-split-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<SplitIndexResponse> SplitAsync<TDocument>(Elastic.Clients.Elasticsearch.IndexName index, Elastic.Clients.Elasticsearch.IndexName target, Action<SplitIndexRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new SplitIndexRequestDescriptor<TDocument>(index, target);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<SplitIndexRequestDescriptor<TDocument>, SplitIndexResponse, SplitIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Splits an existing index into a new index with more primary shards.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-split-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<SplitIndexResponse> SplitAsync(SplitIndexRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<SplitIndexRequestDescriptor, SplitIndexResponse, SplitIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Splits an existing index into a new index with more primary shards.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-split-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<SplitIndexResponse> SplitAsync(Elastic.Clients.Elasticsearch.IndexName index, Elastic.Clients.Elasticsearch.IndexName target, CancellationToken cancellationToken = default)
	{
		var descriptor = new SplitIndexRequestDescriptor(index, target);
		descriptor.BeforeRequest();
		return DoRequestAsync<SplitIndexRequestDescriptor, SplitIndexResponse, SplitIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Splits an existing index into a new index with more primary shards.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/8.15/indices-split-index.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<SplitIndexResponse> SplitAsync(Elastic.Clients.Elasticsearch.IndexName index, Elastic.Clients.Elasticsearch.IndexName target, Action<SplitIndexRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new SplitIndexRequestDescriptor(index, target);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<SplitIndexRequestDescriptor, SplitIndexResponse, SplitIndexRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Returns statistics for one or more indices.
	/// For data streams, the API retrieves statistics for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-stats.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual IndicesStatsResponse Stats(IndicesStatsRequest request)
	{
		request.BeforeRequest();
		return DoRequest<IndicesStatsRequest, IndicesStatsResponse, IndicesStatsRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Returns statistics for one or more indices.
	/// For data streams, the API retrieves statistics for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-stats.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<IndicesStatsResponse> StatsAsync(IndicesStatsRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<IndicesStatsRequest, IndicesStatsResponse, IndicesStatsRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Returns statistics for one or more indices.
	/// For data streams, the API retrieves statistics for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-stats.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual IndicesStatsResponse Stats<TDocument>(IndicesStatsRequestDescriptor<TDocument> descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<IndicesStatsRequestDescriptor<TDocument>, IndicesStatsResponse, IndicesStatsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Returns statistics for one or more indices.
	/// For data streams, the API retrieves statistics for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-stats.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual IndicesStatsResponse Stats<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices, Elastic.Clients.Elasticsearch.Metrics? metric)
	{
		var descriptor = new IndicesStatsRequestDescriptor<TDocument>(indices, metric);
		descriptor.BeforeRequest();
		return DoRequest<IndicesStatsRequestDescriptor<TDocument>, IndicesStatsResponse, IndicesStatsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Returns statistics for one or more indices.
	/// For data streams, the API retrieves statistics for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-stats.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual IndicesStatsResponse Stats<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices, Elastic.Clients.Elasticsearch.Metrics? metric, Action<IndicesStatsRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new IndicesStatsRequestDescriptor<TDocument>(indices, metric);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<IndicesStatsRequestDescriptor<TDocument>, IndicesStatsResponse, IndicesStatsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Returns statistics for one or more indices.
	/// For data streams, the API retrieves statistics for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-stats.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual IndicesStatsResponse Stats<TDocument>()
	{
		var descriptor = new IndicesStatsRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequest<IndicesStatsRequestDescriptor<TDocument>, IndicesStatsResponse, IndicesStatsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Returns statistics for one or more indices.
	/// For data streams, the API retrieves statistics for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-stats.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual IndicesStatsResponse Stats<TDocument>(Action<IndicesStatsRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new IndicesStatsRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<IndicesStatsRequestDescriptor<TDocument>, IndicesStatsResponse, IndicesStatsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Returns statistics for one or more indices.
	/// For data streams, the API retrieves statistics for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-stats.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual IndicesStatsResponse Stats(IndicesStatsRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<IndicesStatsRequestDescriptor, IndicesStatsResponse, IndicesStatsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Returns statistics for one or more indices.
	/// For data streams, the API retrieves statistics for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-stats.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual IndicesStatsResponse Stats(Elastic.Clients.Elasticsearch.Indices? indices, Elastic.Clients.Elasticsearch.Metrics? metric)
	{
		var descriptor = new IndicesStatsRequestDescriptor(indices, metric);
		descriptor.BeforeRequest();
		return DoRequest<IndicesStatsRequestDescriptor, IndicesStatsResponse, IndicesStatsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Returns statistics for one or more indices.
	/// For data streams, the API retrieves statistics for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-stats.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual IndicesStatsResponse Stats(Elastic.Clients.Elasticsearch.Indices? indices, Elastic.Clients.Elasticsearch.Metrics? metric, Action<IndicesStatsRequestDescriptor> configureRequest)
	{
		var descriptor = new IndicesStatsRequestDescriptor(indices, metric);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<IndicesStatsRequestDescriptor, IndicesStatsResponse, IndicesStatsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Returns statistics for one or more indices.
	/// For data streams, the API retrieves statistics for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-stats.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual IndicesStatsResponse Stats()
	{
		var descriptor = new IndicesStatsRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequest<IndicesStatsRequestDescriptor, IndicesStatsResponse, IndicesStatsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Returns statistics for one or more indices.
	/// For data streams, the API retrieves statistics for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-stats.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual IndicesStatsResponse Stats(Action<IndicesStatsRequestDescriptor> configureRequest)
	{
		var descriptor = new IndicesStatsRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<IndicesStatsRequestDescriptor, IndicesStatsResponse, IndicesStatsRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Returns statistics for one or more indices.
	/// For data streams, the API retrieves statistics for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-stats.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<IndicesStatsResponse> StatsAsync<TDocument>(IndicesStatsRequestDescriptor<TDocument> descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<IndicesStatsRequestDescriptor<TDocument>, IndicesStatsResponse, IndicesStatsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Returns statistics for one or more indices.
	/// For data streams, the API retrieves statistics for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-stats.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<IndicesStatsResponse> StatsAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices, Elastic.Clients.Elasticsearch.Metrics? metric, CancellationToken cancellationToken = default)
	{
		var descriptor = new IndicesStatsRequestDescriptor<TDocument>(indices, metric);
		descriptor.BeforeRequest();
		return DoRequestAsync<IndicesStatsRequestDescriptor<TDocument>, IndicesStatsResponse, IndicesStatsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Returns statistics for one or more indices.
	/// For data streams, the API retrieves statistics for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-stats.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<IndicesStatsResponse> StatsAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices, Elastic.Clients.Elasticsearch.Metrics? metric, Action<IndicesStatsRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new IndicesStatsRequestDescriptor<TDocument>(indices, metric);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<IndicesStatsRequestDescriptor<TDocument>, IndicesStatsResponse, IndicesStatsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Returns statistics for one or more indices.
	/// For data streams, the API retrieves statistics for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-stats.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<IndicesStatsResponse> StatsAsync<TDocument>(CancellationToken cancellationToken = default)
	{
		var descriptor = new IndicesStatsRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequestAsync<IndicesStatsRequestDescriptor<TDocument>, IndicesStatsResponse, IndicesStatsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Returns statistics for one or more indices.
	/// For data streams, the API retrieves statistics for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-stats.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<IndicesStatsResponse> StatsAsync<TDocument>(Action<IndicesStatsRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new IndicesStatsRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<IndicesStatsRequestDescriptor<TDocument>, IndicesStatsResponse, IndicesStatsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Returns statistics for one or more indices.
	/// For data streams, the API retrieves statistics for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-stats.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<IndicesStatsResponse> StatsAsync(IndicesStatsRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<IndicesStatsRequestDescriptor, IndicesStatsResponse, IndicesStatsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Returns statistics for one or more indices.
	/// For data streams, the API retrieves statistics for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-stats.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<IndicesStatsResponse> StatsAsync(Elastic.Clients.Elasticsearch.Indices? indices, Elastic.Clients.Elasticsearch.Metrics? metric, CancellationToken cancellationToken = default)
	{
		var descriptor = new IndicesStatsRequestDescriptor(indices, metric);
		descriptor.BeforeRequest();
		return DoRequestAsync<IndicesStatsRequestDescriptor, IndicesStatsResponse, IndicesStatsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Returns statistics for one or more indices.
	/// For data streams, the API retrieves statistics for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-stats.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<IndicesStatsResponse> StatsAsync(Elastic.Clients.Elasticsearch.Indices? indices, Elastic.Clients.Elasticsearch.Metrics? metric, Action<IndicesStatsRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new IndicesStatsRequestDescriptor(indices, metric);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<IndicesStatsRequestDescriptor, IndicesStatsResponse, IndicesStatsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Returns statistics for one or more indices.
	/// For data streams, the API retrieves statistics for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-stats.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<IndicesStatsResponse> StatsAsync(CancellationToken cancellationToken = default)
	{
		var descriptor = new IndicesStatsRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequestAsync<IndicesStatsRequestDescriptor, IndicesStatsResponse, IndicesStatsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Returns statistics for one or more indices.
	/// For data streams, the API retrieves statistics for the stream’s backing indices.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-stats.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<IndicesStatsResponse> StatsAsync(Action<IndicesStatsRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new IndicesStatsRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<IndicesStatsRequestDescriptor, IndicesStatsResponse, IndicesStatsRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Create or update an alias.
	/// Adds a data stream or index to an alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual UpdateAliasesResponse UpdateAliases(UpdateAliasesRequest request)
	{
		request.BeforeRequest();
		return DoRequest<UpdateAliasesRequest, UpdateAliasesResponse, UpdateAliasesRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Create or update an alias.
	/// Adds a data stream or index to an alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<UpdateAliasesResponse> UpdateAliasesAsync(UpdateAliasesRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<UpdateAliasesRequest, UpdateAliasesResponse, UpdateAliasesRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Create or update an alias.
	/// Adds a data stream or index to an alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual UpdateAliasesResponse UpdateAliases<TDocument>(UpdateAliasesRequestDescriptor<TDocument> descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<UpdateAliasesRequestDescriptor<TDocument>, UpdateAliasesResponse, UpdateAliasesRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Create or update an alias.
	/// Adds a data stream or index to an alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual UpdateAliasesResponse UpdateAliases<TDocument>()
	{
		var descriptor = new UpdateAliasesRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequest<UpdateAliasesRequestDescriptor<TDocument>, UpdateAliasesResponse, UpdateAliasesRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Create or update an alias.
	/// Adds a data stream or index to an alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual UpdateAliasesResponse UpdateAliases<TDocument>(Action<UpdateAliasesRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new UpdateAliasesRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<UpdateAliasesRequestDescriptor<TDocument>, UpdateAliasesResponse, UpdateAliasesRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Create or update an alias.
	/// Adds a data stream or index to an alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual UpdateAliasesResponse UpdateAliases(UpdateAliasesRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<UpdateAliasesRequestDescriptor, UpdateAliasesResponse, UpdateAliasesRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Create or update an alias.
	/// Adds a data stream or index to an alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual UpdateAliasesResponse UpdateAliases()
	{
		var descriptor = new UpdateAliasesRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequest<UpdateAliasesRequestDescriptor, UpdateAliasesResponse, UpdateAliasesRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Create or update an alias.
	/// Adds a data stream or index to an alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual UpdateAliasesResponse UpdateAliases(Action<UpdateAliasesRequestDescriptor> configureRequest)
	{
		var descriptor = new UpdateAliasesRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<UpdateAliasesRequestDescriptor, UpdateAliasesResponse, UpdateAliasesRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Create or update an alias.
	/// Adds a data stream or index to an alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<UpdateAliasesResponse> UpdateAliasesAsync<TDocument>(UpdateAliasesRequestDescriptor<TDocument> descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<UpdateAliasesRequestDescriptor<TDocument>, UpdateAliasesResponse, UpdateAliasesRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Create or update an alias.
	/// Adds a data stream or index to an alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<UpdateAliasesResponse> UpdateAliasesAsync<TDocument>(CancellationToken cancellationToken = default)
	{
		var descriptor = new UpdateAliasesRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequestAsync<UpdateAliasesRequestDescriptor<TDocument>, UpdateAliasesResponse, UpdateAliasesRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Create or update an alias.
	/// Adds a data stream or index to an alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<UpdateAliasesResponse> UpdateAliasesAsync<TDocument>(Action<UpdateAliasesRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new UpdateAliasesRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<UpdateAliasesRequestDescriptor<TDocument>, UpdateAliasesResponse, UpdateAliasesRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Create or update an alias.
	/// Adds a data stream or index to an alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<UpdateAliasesResponse> UpdateAliasesAsync(UpdateAliasesRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<UpdateAliasesRequestDescriptor, UpdateAliasesResponse, UpdateAliasesRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Create or update an alias.
	/// Adds a data stream or index to an alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<UpdateAliasesResponse> UpdateAliasesAsync(CancellationToken cancellationToken = default)
	{
		var descriptor = new UpdateAliasesRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequestAsync<UpdateAliasesRequestDescriptor, UpdateAliasesResponse, UpdateAliasesRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Create or update an alias.
	/// Adds a data stream or index to an alias.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<UpdateAliasesResponse> UpdateAliasesAsync(Action<UpdateAliasesRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new UpdateAliasesRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<UpdateAliasesRequestDescriptor, UpdateAliasesResponse, UpdateAliasesRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Validate a query.
	/// Validates a query without running it.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/search-validate.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ValidateQueryResponse ValidateQuery(ValidateQueryRequest request)
	{
		request.BeforeRequest();
		return DoRequest<ValidateQueryRequest, ValidateQueryResponse, ValidateQueryRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Validate a query.
	/// Validates a query without running it.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/search-validate.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ValidateQueryResponse> ValidateQueryAsync(ValidateQueryRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<ValidateQueryRequest, ValidateQueryResponse, ValidateQueryRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Validate a query.
	/// Validates a query without running it.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/search-validate.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ValidateQueryResponse ValidateQuery<TDocument>(ValidateQueryRequestDescriptor<TDocument> descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<ValidateQueryRequestDescriptor<TDocument>, ValidateQueryResponse, ValidateQueryRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Validate a query.
	/// Validates a query without running it.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/search-validate.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ValidateQueryResponse ValidateQuery<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices)
	{
		var descriptor = new ValidateQueryRequestDescriptor<TDocument>(indices);
		descriptor.BeforeRequest();
		return DoRequest<ValidateQueryRequestDescriptor<TDocument>, ValidateQueryResponse, ValidateQueryRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Validate a query.
	/// Validates a query without running it.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/search-validate.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ValidateQueryResponse ValidateQuery<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices, Action<ValidateQueryRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new ValidateQueryRequestDescriptor<TDocument>(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<ValidateQueryRequestDescriptor<TDocument>, ValidateQueryResponse, ValidateQueryRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Validate a query.
	/// Validates a query without running it.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/search-validate.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ValidateQueryResponse ValidateQuery<TDocument>()
	{
		var descriptor = new ValidateQueryRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequest<ValidateQueryRequestDescriptor<TDocument>, ValidateQueryResponse, ValidateQueryRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Validate a query.
	/// Validates a query without running it.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/search-validate.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ValidateQueryResponse ValidateQuery<TDocument>(Action<ValidateQueryRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new ValidateQueryRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<ValidateQueryRequestDescriptor<TDocument>, ValidateQueryResponse, ValidateQueryRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Validate a query.
	/// Validates a query without running it.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/search-validate.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ValidateQueryResponse ValidateQuery(ValidateQueryRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<ValidateQueryRequestDescriptor, ValidateQueryResponse, ValidateQueryRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Validate a query.
	/// Validates a query without running it.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/search-validate.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ValidateQueryResponse ValidateQuery(Elastic.Clients.Elasticsearch.Indices? indices)
	{
		var descriptor = new ValidateQueryRequestDescriptor(indices);
		descriptor.BeforeRequest();
		return DoRequest<ValidateQueryRequestDescriptor, ValidateQueryResponse, ValidateQueryRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Validate a query.
	/// Validates a query without running it.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/search-validate.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ValidateQueryResponse ValidateQuery(Elastic.Clients.Elasticsearch.Indices? indices, Action<ValidateQueryRequestDescriptor> configureRequest)
	{
		var descriptor = new ValidateQueryRequestDescriptor(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<ValidateQueryRequestDescriptor, ValidateQueryResponse, ValidateQueryRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Validate a query.
	/// Validates a query without running it.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/search-validate.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ValidateQueryResponse ValidateQuery()
	{
		var descriptor = new ValidateQueryRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequest<ValidateQueryRequestDescriptor, ValidateQueryResponse, ValidateQueryRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Validate a query.
	/// Validates a query without running it.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/search-validate.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual ValidateQueryResponse ValidateQuery(Action<ValidateQueryRequestDescriptor> configureRequest)
	{
		var descriptor = new ValidateQueryRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<ValidateQueryRequestDescriptor, ValidateQueryResponse, ValidateQueryRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Validate a query.
	/// Validates a query without running it.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/search-validate.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ValidateQueryResponse> ValidateQueryAsync<TDocument>(ValidateQueryRequestDescriptor<TDocument> descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<ValidateQueryRequestDescriptor<TDocument>, ValidateQueryResponse, ValidateQueryRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Validate a query.
	/// Validates a query without running it.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/search-validate.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ValidateQueryResponse> ValidateQueryAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices, CancellationToken cancellationToken = default)
	{
		var descriptor = new ValidateQueryRequestDescriptor<TDocument>(indices);
		descriptor.BeforeRequest();
		return DoRequestAsync<ValidateQueryRequestDescriptor<TDocument>, ValidateQueryResponse, ValidateQueryRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Validate a query.
	/// Validates a query without running it.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/search-validate.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ValidateQueryResponse> ValidateQueryAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices? indices, Action<ValidateQueryRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new ValidateQueryRequestDescriptor<TDocument>(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<ValidateQueryRequestDescriptor<TDocument>, ValidateQueryResponse, ValidateQueryRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Validate a query.
	/// Validates a query without running it.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/search-validate.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ValidateQueryResponse> ValidateQueryAsync<TDocument>(CancellationToken cancellationToken = default)
	{
		var descriptor = new ValidateQueryRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequestAsync<ValidateQueryRequestDescriptor<TDocument>, ValidateQueryResponse, ValidateQueryRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Validate a query.
	/// Validates a query without running it.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/search-validate.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ValidateQueryResponse> ValidateQueryAsync<TDocument>(Action<ValidateQueryRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new ValidateQueryRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<ValidateQueryRequestDescriptor<TDocument>, ValidateQueryResponse, ValidateQueryRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Validate a query.
	/// Validates a query without running it.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/search-validate.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ValidateQueryResponse> ValidateQueryAsync(ValidateQueryRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<ValidateQueryRequestDescriptor, ValidateQueryResponse, ValidateQueryRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Validate a query.
	/// Validates a query without running it.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/search-validate.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ValidateQueryResponse> ValidateQueryAsync(Elastic.Clients.Elasticsearch.Indices? indices, CancellationToken cancellationToken = default)
	{
		var descriptor = new ValidateQueryRequestDescriptor(indices);
		descriptor.BeforeRequest();
		return DoRequestAsync<ValidateQueryRequestDescriptor, ValidateQueryResponse, ValidateQueryRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Validate a query.
	/// Validates a query without running it.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/search-validate.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ValidateQueryResponse> ValidateQueryAsync(Elastic.Clients.Elasticsearch.Indices? indices, Action<ValidateQueryRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new ValidateQueryRequestDescriptor(indices);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<ValidateQueryRequestDescriptor, ValidateQueryResponse, ValidateQueryRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Validate a query.
	/// Validates a query without running it.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/search-validate.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ValidateQueryResponse> ValidateQueryAsync(CancellationToken cancellationToken = default)
	{
		var descriptor = new ValidateQueryRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequestAsync<ValidateQueryRequestDescriptor, ValidateQueryResponse, ValidateQueryRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Validate a query.
	/// Validates a query without running it.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/master/search-validate.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<ValidateQueryResponse> ValidateQueryAsync(Action<ValidateQueryRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new ValidateQueryRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<ValidateQueryRequestDescriptor, ValidateQueryResponse, ValidateQueryRequestParameters>(descriptor, cancellationToken);
	}
}